Ben*_*enz 9 coldfusion iis-7.5
为了允许ColdFusion显示其错误而不仅仅是服务器错误(代码500),我已根据本网站的一些调查结果添加到web.config中.
问题看起来已经解决但......
当我访问IIS中的一个不存在的目录时,它返回一个没有任何状态代码的"空白"页面.如果我将它从passthrough设置回auto,IIS将再次获取错误页面,并且不再显示ColdFusion错误.
有人有解决方案吗?我做了一些研究并"怀疑"JWildcardhandler可能是问题,但我找不到解决方案.
非常感激!
Jor*_*ter 22
如果有人想知道这个人的网络配置可能看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors existingResponse="PassThrough" />
...
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在早期版本的IIS中,如果您的自定义脚本返回了错误代码,则IIS会忽略它并让它通过.但您也可以将其设置为使用自定义脚本处理错误状态.
在我的旧服务器上,如果给定的URL是404,则IIS被设置为执行/404.cfm,其显示错误页面并使用返回404状态代码<cfheader>.
但是,现在如果该脚本返回404状态代码,则最终结果是IIS返回服务器错误,而不是返回带有404状态代码的响应.
避免这种情况的唯一方法是使用existingResponse="PassThrough"然后使用CFAdmin中设置的站点范围"模板未找到"模板.
这是有趣的部分.我将index.cfm设置为我的站点的默认索引和唯一的默认索引.
如果我去/about/,并且/about/index.cfm存在,那么它呈现页面,就好像我已经要求它一样/about/index.cfm.如果我去/about/index.cfm和/about/index.cfm它不存在,它执行站点范围内的404模板.
但是,如果我去/about/和/about/不存在作为一个URL,它并没有试图加载/about/index.cfm,从而引发站点范围内的404模板.相反,它呈现一个空白页面!
据我所知,这个问题没有可行的解决办法.看起来只有用.Net编写的人才能解决这个问题,因为他们可以在他们生成的响应中放置一个标志,字面上告诉IIS"忽略状态代码".我认为微软根本不支持备用Web应用程序.
基本上,这是解决方案:
摆脱existingResponse="PassThrough"并返回错误的状态代码.
其他任何事情都难以实施.请注意,如果您正在制作RESTful应用程序或API,则此方法无效.在这种情况下,你必须创建只是一个虚拟目录,以便您可以指定一个自定义的web.config文件,其确实使用existingResponse="PassThrough".但是,如果您需要能够允许自定义错误处理和自定义404处理,那么您将被有效地搞砸.
好消息是,除了API和Ajax之外,当他们正在查看你的标题时,唯一有人会关心状态代码实际是什么,在这种情况下,他们会看到你正在运行IIS而且只是为你感到难过
| 归档时间: |
|
| 查看次数: |
8163 次 |
| 最近记录: |