代码之家  ›  专栏  ›  技术社区  ›  Tyler Clendenin

iis7劫持了我的ColdFusion错误页面

  •  8
  • Tyler Clendenin  · 技术社区  · 14 年前

    在我的异常处理文件中,我将statuscode设置为404,然后为错误页面呈现N个HTML页面(想想fail whale)。

    <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 回复  |  直到 11 年前
        1
  •  21
  •   erlando    14 年前

    这可能有助于:

    <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 Request对象调用一个导出函数 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);