问题描述
在我的项目中,我确实有一个名为 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管道。
问题是这个没有按预期工作,当我尝试通过 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 (将#修改为@)