首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有webservice的IgnoreRoute -从路由中排除asmx URL

带有webservice的IgnoreRoute -从路由中排除asmx URL
EN

Stack Overflow用户
提问于 2011-01-13 07:48:55
回答 6查看 7.6K关注 0票数 11

我正在将文件堆栈控制添加到我的asp.net MVC web应用程序中。

我有一个在路由中被忽略的media.aspx页面

代码语言:javascript
复制
routes.IgnoreRoute("media.aspx");

它成功地运行并提供了一个标准的webforms页面。

在添加filevistacontrol时,我似乎不能忽略该控件对其any服务的任何调用。

例如,下面的ignoreRoute似乎仍然会被MvcHandler拾取。

代码语言:javascript
复制
routes.IgnoreRoute("FileVistaControl/filevista.asmx/GetLanguageFile/");

抛出的异常是:

代码语言:javascript
复制
'The RouteData must contain an item named 'controller' with a non-empty string value'

提前谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-04 01:08:35

我使用这个(其他答案的组合)让它工作:

代码语言:javascript
复制
routes.IgnoreRoute("{directory}/{resource}.asmx/{*pathInfo}");
票数 9
EN

Stack Overflow用户

发布于 2013-04-11 16:41:28

简短的回答:

代码语言:javascript
复制
routes.IgnoreRoute( "{*url}", new { url = @".*\.asmx(/.*)?" } );

长长的答案:

如果您的服务可以位于路径的任何级别中,则这些选项都不适用于所有可能的.asmx服务

代码语言:javascript
复制
routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");
routes.IgnoreRoute("{directory}/{resource}.asmx/{*pathInfo}");

默认情况下,路由模式中的参数将匹配,直到它们找到斜杠。

如果参数以星形*开头,就像这些答案中的pathInfo一样,它将匹配所有内容,包括斜杠。

所以:

  • 第一个答案只适用于根路径中的.asmx服务,因为{resource}不会匹配斜杠。(适用于像http://example.com/weather.asmx/forecast)
  • the这样的东西,第二个只适用于离根目录只有一级的.asmx服务。{directory}将匹配路径的第一段,{resource}将服务的名称。(适用于像http://example.com/services/weather.asmx/forecast)

这样的东西

都不适用于http://example.com/services/weather/weather.asmx/forecast)

解决方案是使用IgnoreRoute方法的另一个重载,该方法允许指定约束。使用这个解决方案,你可以使用一个简单的模式来匹配所有的url,像这样:{*url}。然后,您只需设置一个约束来检查此url是否指向.asmx服务。这个约束可以用如下所示的正则表达式表示:.*\.asmx(/.*)?。这个正则表达式匹配任何以.asmx结尾的字符串,后面可以跟一个斜杠和任意数量的字符。

所以,最终的答案是:

代码语言:javascript
复制
routes.IgnoreRoute( "{*url}", new { url = @".*\.asmx(/.*)?" } );
票数 17
EN

Stack Overflow用户

发布于 2011-01-20 06:08:35

使用以下命令时会发生什么:

代码语言:javascript
复制
routes.IgnoreRoute("FileVistaControl/filevista.asmx");

如果这不起作用,可以尝试使用ASP.NET路由调试器来帮助您:http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4675367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档