解决方案中与 web.config 中的处理程序路径同名的静态文件夹给出 HTTP 错误 500.0 - 内部服务器错误

问题描述

在我的项目中,我确实有一个名为 StaticFiles静态文件夹,我们通常在其中保存一些 static files (pdf)

目前用户通过直接 url 访问它,并且由于这些都是静态的,因此无需通过 MVC 管道即可获得服务。现在我们计划在访问这些文件时提出额外的安全措施。我们在 web.config添加一个处理程序,如下所示

 <add name="ManagedPdfExtension"  path="StaticFiles/*.pdf" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

在这个是强制StaticFile文件夹中的pdf文件通过MVC管道。

我还在 MVC 控制器中添加一个方法,用于提供文件

问题是这个没有按预期工作,当我尝试通过 URL 访问它时总是抛出内部错误

但是如果我将内部文件名称更改为其他可能是 ABCD 并像下面那样访问它,这将起作用。

[HttpGet]
        [Route("StaticFiles/{*any}")]
        public ActionResult CommonFiles(string attachmentName)
        {
            var filePathWithName = this.RouteData.Values["any"];
            var path = System.Web.Hosting.HostingEnvironment.MapPath("~/ABCD/"+ filePathWithName);
            path = path.Replace("//","/").Replace("/","//");
            byte[] fileBytes = System.IO.File.ReadAllBytes(path);
            string fileName = "Test.pdf";

            var cd = new Contentdisposition
            {
                Inline = true,FileName = fileName
            };

            Response.Clear();
            response.addheader(CoreConstants.Contentdisposition,cd.ToString());
            response.addheader(CoreConstants.WindowTarget,CoreConstants.WindowTargetBlank);
            Response.BufferOutput = false;
            return File(fileBytes,"application/pdf");
        }

任何想法,我们如何使用 StaticFiles 文件夹而不是新名称?当文件夹 StaticNames 添加解决方案时,该 url 将出现内部服务器错误

Detailed Error information:
Module     ManagedPipelineHandler
Notification       ExecuteRequestHandler
Handler    ManagedPdfExtension
Error Code     0x800703e9
Requested URL      http://localhost:62963/StaticFiles/test.pdf
 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)