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呈现自己的错误页面,而是可能将请求传输到另一个文件 我已经

在IIS7(集成模式)中试图对错误的渲染进行完全的编程控制,这让我头疼不已。我想做的是给一个错误(找不到页面、内部服务器错误、未经身份验证等),将整个请求传输到一个带有正确HTTP状态代码的自定义ASPX或HTML(我更喜欢后者)

我想要的是IIS7不要对我设置HTTP状态代码的内容一窍不通。我不想要它的错误处理。当我设置
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页面?