IIS8.5>站点> mysite>错误页面> 404
select“从静态文件插入内容到错误响应”。
取消选中“尝试以客户端语言返回错误文件”。
input“notfound.html”的path,我已经validation它在那里。
当我访问一个页面,我知道不在那里我得到:
The page cannot be displayed because an internal server error has occurred.
为什么我没有得到我的自定义404文件?
我不认为这是一个许可的事情,我试着将“notfound.html”移动到几个地方,其中之一是实际网站wwwroot文件夹,服务于其余的网站。
生成此错误是因为在web.config检测到绝对path。
web.config文件中的system.webServer/httpErrors部分不允许绝对物理path(如C:\path\to\notfound.html )。
现在你有两个解决scheme:
1.在ApplicationHost.config文件中允许物理path
默认情况下,这个文件位于%SystemRoot%\system32\inetsrv\config
find这个文件并编辑它
search<httpErrors ..... >
然后添加指令allowAbsolutePathsWhenDelegated="true" ,如下所示:
<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath" allowAbsolutePathsWhenDelegated="true"> .... .... </httpErrors>
保存文件,应该工作!
2.使用相对path
相对path意味着您将不得不将自定义错误页面存储在给定网站的根文件夹中。
然后,转到IIS > Sites > mysite > Error Pages > 404
并设置您的自定义错误页面,如下所示:

点击OK ,应该工作!
编辑:
但是请注意:
404 Not Found响应 200 OK响应 我窥探了一下,发现有一个名为“allowAbsolutePathsWhenDelegated”的东西默认设置为“false”。
IIS8.5 > Sites > mysite > Management > Configuration Editor > system.webServer/httpErrors
但是,该值被locking,不能在那里编辑。 所以我点击了树中的根,并可以在那里编辑它。
IIS8.5 > Management > Configuration Editor > system.webServer/httpErrors
请注意,根目录实际上并不命名为“IIS8.5”,它以您的计算机名称命名。
所以在allowAbsolutePathsWhenDelegated设置为true后,一切正常。 一个不同的解决scheme是将静态文件放在我的网站的wwwroot文件夹中,只需input它的名称作为404错误页面(虽然在我的情况下,它是绝对path,而不是相对较好)。
有什么错误的是,在“错误页面”屏幕上的任何地方都没有提到这个默认限制。 它没有说任何有关path必须相对于您的网站根,并且由于默认不是相对的(它在inetpub文件夹中),您认为绝对path可以正常工作。
希望微软将在以后的版本中解决这个接口问题。 请input字段中的任何限制。