【发布时间】:2011-04-27 00:42:42
【问题描述】:
我们在 IIS 站点的应用程序下的虚拟目录的物理子目录中有一个 web.config。像这样的:
- 网站
- 应用程序
- Web.config
- 虚拟目录
- 子目录
- 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 并带有此消息:
请求格式无法识别,因为 URL 意外以“/blah”结尾。
堆栈跟踪是:
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)
【问题讨论】:
-
我编辑了问题,在服务开始失败后包含 HTTP POST 请求的异常消息和堆栈跟踪
-
另外,忘了说我其实是用.Net Reflector查看.Net代码,发现当它认为HTTP POST不被允许的时候会抛出特定的异常。
-
您好,我遇到了完全相同的问题....您找到解决方案了吗?谢谢!
-
不,还没有。它可能需要调试到 .Net 程序集,而我没有 Reflector 许可证。如果你这样做了,最新版本允许你这样做,所以请随意尝试。
-
我来自 ASP.NET 开发团队,如果你仍然有一个 repro 活跃并且你想花一些时间和我一起缩小问题,这对我们真的很有帮助以便有效解决问题。请通过 [dragod (at) microsoft d.o.t com] 直接与我联系,谢谢!
标签: asp.net web-config subdirectory