asp.net-mvc-4 – 扩展名的URL不能通过路由处理

我一直在建议 from this article在asp.net mvc3中设置一个robots.txt文件,使用控制器来处理服务器响应,而IIS 8.0 express正在返回一个找不到错误文件,而不是asp.net错误.

在这些情况下,如何让IIS不寻找文件?在web.config中有需要的东西吗?

解决方法

IIS尝试在这里变得聪明.他拦截url中的点,并认为这是一个静态文件,并尝试使用认的StaticFile处理程序.它没有事件到达受管理的ASP.NET应用程序.

第一种可能性是在您的web.config添加以下内容

<system.webserver>
    <modules runAllManagedModulesForAllRequests="true" />

但实际上这不是我建议你做的事情,因为这可能会对您的应用程序的性能产生负面影响,因为现在所有对静态文件的请求(如.js,.css,图像,…)都将通过管理管道.

推荐的方法是将以下处理程序添加到您的web.config(< system.webServer>的< handlers>标签)中:

<system.webServer>
    <handlers>
        <add name="Robots-ISAPI-Integrated-4.0" path="/robots.txt" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
        ...
    </handlers>
</system.webServer>

注意我们如何指定这个处理程序只适用于特定的URL和HTTP动词.

现在当您获取/robots.txt时,IIS将不再使用StaticFile处理程序处理它,而是将其传递到托管管道ASP.NET.然后它将被路由引擎拦截并路由到相应的控制器动作.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....