在我的异常处理文件中,我将状态代码设置为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停止它认为它比我的诡计更好。
答案 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);