2023-02-17 364
我有一个要求我的URL在路径中有点的项目.例如,我可能有一个URL,例如www.example.com/people/michael.phelps
带有点的URL会生成404.我的路由很好.如果我在没有点的情况下传递Michaelphelps,那么一切都可以.如果添加点,我会收到404错误.示例网站与IIS8 Express在Windows 7上运行. URLSCAN没有运行.
我尝试将以下内容添加到我的web.config:
<security>
<requestFiltering allowDoubleEscaping="true"/>
</security>
不幸的是,这没有区别.我只是收到404.0找不到错误.
这是一个MVC4项目,但我认为这没有相关.我的路由正常工作,我期望的参数在那里,直到它们包括一个点.
我需要配置什么,以便我的URL中有点?
我通过编辑网站的HTTP处理程序来获得此功能.为了我的需求,这效果很好,可以解决我的问题.
我只是添加了一个新的HTTP处理程序,该处理程序寻找特定的路径标准.如果请求匹配,则将其正确发送到.NET进行处理.我对这种解决方案更加满意,比Urlrewrite黑客攻击或启用Rammfar.
例如,要有.net进程url www.example.com/people/michael.phelps 在system.webServer / handlers元素中添加以下行:
<add name="ApiURIs-ISAPI-Integrated-4.0"
path="/people/*"
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
编辑
还有其他帖子暗示解决此问题的解决方案是RAMMFAR或RunAllManagedModulesForAllRequests.启用此选项将为所有请求启用所有托管模块.这意味着在不需要的情况下,.NET将处理图像,PDF和其他所有内容之类的静态文件.除非您有特定案例,否则最好将此选项保留.
在绕过一些戳戳之后,我发现Raseedurltofilesystemmapping对我根本不起作用,在我的情况下有效的是将Rammfar设置为true,对于(.NET 4.0 + MVC3)和(.NET 4.5)和(.NET 4.5 + mvc4).
<system.webserver>
<modules runAllManagedModulesForAllRequests="true">
请注意设置rammfar true
我相信您必须在web.config中设置属性raseledurltofilesystemmapping. haack 写了一篇文章不久前(还有其他一些 posts 相同类型的问题)
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
编辑
从下面的评论中,以后的.NET/IIS版本可能要求它在system.WebServer元素中.
<system.webServer>
<httpRuntime relaxedUrlToFileSystemMapping="true" />
以上所述是小编给大家介绍的在ASP.NET mvc和IIS中,URL中的圆点导致404,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/34169.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态