Asp.net url路由捕获asmx web服务调用

发布于 2024-12-07 22:24:40 字数 689 浏览 1 评论 0原文

我有一个 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 文件尚未触及。

I have an Asp.Net 4.0 Web Forms project that uses url routing for user friendly urls, i.e hiding aspx-pages behind clear text urls.

In this project we have an asmx web service that serves some jQuery controls on the pages. Everything has worked fine so far on development machines and the internal testing site but now when we installed the project on a production site the asmx calls are trapped by the routing code.

We have a catch all route that is added last that shows the Not found -page.

When I open the web service on the server (http://localhost/service.asmx?op=MyWebMethod), enter some values and click Invoke I get the Not found page. The url that Invoke opens is http://localhost/service.asmx/MyWebMethod so it's all quite logical (service.asmx looks like a directory) but I don't understand how this can work on all other installations of the same project.

The production server is Windows 2008 Server R2 Standard, the project is Asp.net 4.0 and I haven't registered any StopRoutingHandler for asmx-files.

The web.config files are identical between the internal testing site and the production site and the machine.config -files haven't been touched to my knowledge.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南街九尾狐 2024-12-14 22:24:40
routes.Add(new Route("{resource}.asmx/{*pathInfo}", new StopRoutingHandler()));
routes.Add(new Route("{resource}.asmx/{*pathInfo}", new StopRoutingHandler()));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文