IIS7和HTTP状态代码处理
在IIS7(集成模式)中试图对错误的渲染进行完全的编程控制,这让我头疼不已。我想做的是给一个错误(找不到页面、内部服务器错误、未经身份验证等),将整个请求传输到一个带有正确HTTP状态代码的自定义ASPX或HTML(我更喜欢后者) 我想要的是IIS7不要对我设置HTTP状态代码的内容一窍不通。我不想要它的错误处理。当我设置IIS7和HTTP状态代码处理,http,iis-7,http-status-codes,Http,Iis 7,Http Status Codes,在IIS7(集成模式)中试图对错误的渲染进行完全的编程控制,这让我头疼不已。我想做的是给一个错误(找不到页面、内部服务器错误、未经身份验证等),将整个请求传输到一个带有正确HTTP状态代码的自定义ASPX或HTML(我更喜欢后者) 我想要的是IIS7不要对我设置HTTP状态代码的内容一窍不通。我不想要它的错误处理。当我设置Response.StatusCode=(int)HttpStatusCode.NotFound时,我想要的不是IIS呈现自己的错误页面,而是可能将请求传输到另一个文件 我已经
Response.StatusCode=(int)HttpStatusCode.NotFound
时,我想要的不是IIS呈现自己的错误页面,而是可能将请求传输到另一个文件
我已经让这个静态配置工作起来了:
<configuration>
<system.webServer>
<httpErrors>
<clear />
<error statusCode="404" path="/errors/404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
虽然这是可行的,但在给定错误场景的情况下,它并没有让我对如何处理响应进行编程控制。配置是一个很好的回退,但我确实希望能够设置响应.StatusCode
,并在某些情况下呈现与配置的404.html
完全不同的内容(例如,如果我们接收到Accept:application/JSON
,则呈现JSON响应),但IIS7不允许我这样做。不可能
那我该怎么办?我试着设置,但这看起来像一个巨大的黑客,似乎没有一贯的工作。将此属性设置为true真的是获得所需行为的建议最佳实践吗
此刻,我只剩下对IIS7的强烈憎恨。有谁能帮我纠正这一点,证明我只是愚蠢,我确实可以完全控制HTTP堆栈吗?看看下面的内容: 你需要设置
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
您是否尝试过使用HTTP处理程序而不是静态html页面?