gpt4 book ai didi

c# - 在 MVC4 路由中使用点 "."字符

转载 作者:行者123 更新时间:2023-11-30 12:29:15 26 4
gpt4 key购买 nike

我目前正在提供来自数据库表的图像,这些图像都是相同的文件类型。我想要字符点“。”在 route ,但没有取得任何成功。据我了解,ISAPI 处理程序可能会导致与此相关的问题。我只是不确定我将如何添加和排除以允许 ASP.NET 只处理这条路由。

routes.MapRoute(
name: "ImageUrl",
url: "Image/{action}/{id}.png",
defaults: new { controller = "Image" }
);

最佳答案

您收到 404 错误是因为没有特定的托管处理程序映射到 IIS 配置中的路径 *.png。所以所有对Image/*.png路径的请求都被StaticFile模块拦截(StaticFileModule, DefaultDocumentModule, DirectoryListingModule),这些模块找不到请求文件。

您可以通过在 web.config 中配置您的应用程序来解决此问题。

第一个选项 是将runAllManagedModulesForAllRequests="true" 属性添加到configuration/system.webServer/modules 元素。它应该看起来像这样:

    <modules runAllManagedModulesForAllRequests="true" />

注意:但我强烈建议不要这样做。阅读更多关于 possible performance problems 的信息.

所以第二个(也是更好的)选项是注册 ASP.NET ISAPI 来处理您对 Image/*.png 路径的请求:

<system.webServer>
<handlers>
<add name="ImageMVCHandler-ISAPI-4.0_32bit" path="image/*.png" verb="GET,HEAD" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ImageMVCHandler-ISAPI-4.0_64bit" path="image/*.png" verb="GET,HEAD" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ImageMVCHandler-Integrated-4.0" path="image/*.png" verb="GET,HEAD" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>

关于c# - 在 MVC4 路由中使用点 "."字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com