我在 Windows 2008 服务器上安装了一个 ASP.Net 网站,默认情况下使用 IIS7。该网站似乎工作正常,但我的表格上的回帖不起作用。经过几个小时的调试,我意识到当我手动尝试在浏览器中点击 WebResource.axd 文件时(例如,我在地址栏中输入http://www.domain.com/WebResource.axd ),我得到了一个HTTP 403 错误(拒绝访问)。
我不太确定下一步该往哪里看,而且我的 Windows 2008 安全知识有限。我该如何去访问该文件?
我在 Windows 2008 服务器上安装了一个 ASP.Net 网站,默认情况下使用 IIS7。该网站似乎工作正常,但我的表格上的回帖不起作用。经过几个小时的调试,我意识到当我手动尝试在浏览器中点击 WebResource.axd 文件时(例如,我在地址栏中输入http://www.domain.com/WebResource.axd ),我得到了一个HTTP 403 错误(拒绝访问)。
我不太确定下一步该往哪里看,而且我的 Windows 2008 安全知识有限。我该如何去访问该文件?
如果您正在使用 plesk 面板或 Web 应用程序防火墙 (ModSecurity) 处于活动状态,请禁用“OWASP_CRS / LEAKAGE / ERRORS_IIS”和“OWASP_CRS / POLICY / EXT_RESTRICTED”安全规则。
导航到您的 iis 配置文件夹。通常:c:\windows\system32\inetsrv\config 并打开 applicationHost.config 文件。然后在文件中导航到该<handlers>
部分并检查是否存在以下行:
<add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode" />
也就是说,如果您在集成模式下运行。检查是否指定了动词 GET。
如果您在经典管道模式下运行,则该行应该存在
<add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
如果一切似乎都还可以,请查看 Handlers and Modules 部分中的 web.config 并查看是否已<clear />
在每个顶部添加。如果你这样做了,那么你在 web.config 文件中包含add部分,尊重 applicationHosting.config 文件中指定的处理程序/模块的顺序。
不确定那个,但它可能与 IIS 中的 http 压缩有关。还要检查 IIS 用户是否可以访问该文件。
检查您的 IIS 日志 - 它们应该提供包含有关错误的更详细信息的状态代码。另外,回发错误的性质是什么?
这是我在回发时遇到的错误:
WebForm_PostBackOptions 未定义。
据我所知,该函数包含在 WebResource.axd 文件中,这导致我在地址栏中尝试它,我如何知道 403 错误...
防火墙设置有问题。请求在防火墙中被阻止。联系服务器管理员更改配置。我们得到了解决方案。
对于拥有 Plesk 控制面板的托管公司,您可以关闭 Web 应用程序防火墙 (WAF),但由于 WAF 的目的是帮助保护您的网站免受各种攻击,您应该只停用导致问题的特定规则 ID。就我而言,我需要在我的网站上允许 .axd 文件(例如,Scriptresource.axd 和 WebResource.axd)。
通过打开 Plesk WAF 页面上的“ModSecurity 日志文件”来识别违反的特定规则 ID。
在日志文件中搜索 403 Access Denied 消息,然后查找类似[id "942440"]
. 这是被违反的规则 ID。
通过在 Plesk WAF 页面的“关闭安全规则”部分中键入 ID 号,关闭适用于此问题的“安全规则”。在本例中,您只需在文本框中键入数字“920440”。