路由:
context.MapRoute(
"Dashboard_default",
"Dashboard/{controller}/{action}/{jobName}",
new { action = "Index", controller = "Dashboard", jobName = UrlParameter.Optional }
);
但是对于Route
http://localhost/candidate/Dashboard/Overview/Show/sdfdsf.xx.dd
我接受了:
HTTP错误404.7 - 未找到 请求过滤模块配置为拒绝文件扩展名。
同时,路线
http://localhost/candidate/Dashboard/Overview/Show/sdfdsf.xx
给予正确回应。
我认为IIS有些问题,以前有人见过吗?
答案 0 :(得分:5)
要在您的web.config中允许该特定网址,您可以添加以下内容:
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".dd" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
否则,您可以在fileExtensions中添加<clear />
以允许路由任何文件。
答案 1 :(得分:0)
如果您使用的是.Net 4.0,请在web.config的system.web部分中进行说明:
<httpRuntime relaxedUrlToFileSystemMapping="true" />
此处有更多解释: http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx
据我了解,点在路由定义中被视为文字。
http://haacked.com/archive/2008/04/10/upcoming-changes-in-routing.aspx
答案 2 :(得分:0)
您需要在最后一个参数上捕获所有路由才能正常工作。
context.MapRoute(
"Dashboard_default",
"candidate/Dashboard/{controller}/{action}/{*jobName}",
new { action = "Index",
controller = "Overview",
jobName = UrlParameter.Optional}
);
答案 3 :(得分:0)
.dd扩展名是IIS中默认的拒绝文件扩展名之一。您可以转到inetmgr - &gt;删除它。网站 - &gt;申请(候选人) - &gt;请求过滤(在IIS部分中) - &gt;在File Name Extensions选项卡下找到.dd并将其删除。
修改强>
描述的操作会自动将下一部分添加到web.config(我看到有人这样做并将其作为新答案发布):
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".dd" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>