我们在 IIS 站点中的应用程序下的虚拟目录的物理子目录中有一个 web.config。像这样的东西:
- 地点
- 应用程序
- 网页配置
- 虚拟目录
- 子目录
- 网页配置
- 子目录
- 应用程序
在 Web.config 中,我们将此配置放在 system.web 中:
<webServices>
<protocols>
<add name="HttpPost" />
<add name="HttpGet" />
</protocols>
</webServices>
我们在该子目录中为 ASMX 启用这两种协议。
这一切都可以正常工作一段时间,然后它就停止了,这些协议就停止了工作。我们重新启动 IIS,它又开始工作了。
为了解决这个问题,我们使用了一种解决方法将该配置添加到应用程序 Web.config 中,然后它就可以正常工作了。但我们希望避免更改应用程序 Web.config,而是让子目录 Web.config 工作。
为什么 ASP.Net 会在一段时间后停止考虑子目录 Web.config 的任何想法?
我们在 Windows Server 2003、IIS 6、ASP.Net 2.0 上托管。
对 ASMX 的 HTTP POST 请求停止工作。我们得到的错误是 System.InvalidOperationException 并带有以下消息:
无法识别以“/blah”结尾的 URL 的请求格式。
堆栈跟踪是:
at System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath)
at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)