我有一个 Asp.Net 4.0 Web Forms 项目,它使用 url 路由来提供用户友好的 url,即将 aspx 页面隐藏在明文 url 后面。
在这个项目中,我们有一个 asmx Web 服务,它在页面上提供一些 jQuery 控件。到目前为止,在开发机器和内部测试站点上一切都运行良好,但现在当我们在生产站点上安装该项目时,asmx 调用会被路由代码捕获。
我们有一个最后添加的捕获所有路由,显示“未找到”页面。
当我在服务器上打开 Web 服务 (http://localhost/service.asmx?op=MyWebMethod) 时,输入一些值并单击“调用”,我会看到“未找到”页面。 Invoke打开的url是http://localhost/service.asmx/MyWebMethod所以这一切都很合乎逻辑(service.asmx 看起来像一个目录),但我不明白这如何在同一项目的所有其他安装上工作。
生产服务器是Windows 2008 Server R2 Standard,项目是Asp.net 4.0,我还没有为asmx文件注册任何StopRoutingHandler。
内部测试站点和生产站点之间的 web.config 文件是相同的,据我所知,machine.config 文件尚未触及。
最佳答案
routes.Add(new Route("{resource}.asmx/{*pathInfo}", new StopRoutingHandler()));
关于Asp.net url路由捕获asmx web服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661378/