IIS7劫持了我的Coldfusion错误页面

时间:2010-10-14 19:17:25

标签: iis iis-7 coldfusion http-status-code-404

在我的异常处理文件中,我将状态代码设置为404,然后为错误页面呈现n HTML页面(想想失败鲸鱼)。

<cfheader statuscode="404" statustext="Application Exception">

<html><head><title>Error</title></head><body><h1>There was an error yo!</h1></body></html>

这显然过于简化,但只是为了确保一切都得到了证明。

我发现,从ASP.NET请求中,他们可以设置变量“Response.TrySkipIisCustomErrors = true”,以防止IIS显示自己的错误页面。

Coldfusion中的某个人怎么做呢/我怎么能告诉IIS停止它认为它比我的诡计更好。

1 个答案:

答案 0 :(得分:21)

这可能会有所帮助:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

了解更多信息:

  

HTTP Errors (IIS.NET)
  What to expect from IIS7 custom error module (IIS.NET)

如果这不起作用,那么您可以尝试编写.NET HttpModule以插入IIS请求/响应管道以设置Response.TrySkipCustomErrors。不理想。

ASP.NET的worker请求对象调用名为MgdSetStatusW的导出函数。这里的问题是,除非Coldfusion公开此标志,否则您将无法直接在CF中设置该值。

使用.NET Reflector我看到ASP.NET使用以下方式设置响应状态:

[DllImport("webengine4.dll", CharSet=CharSet.Unicode)]
internal static extern int MgdSetStatusW(IntPtr pRequestContext, 
    int dwStatusCode, int dwSubStatusCode, string pszReason, 
    string pszErrorDescription, bool fTrySkipCustomErrors);