我有一个 MVC2
应用程序,其中还包含非 MVC 部分(常规 Asp.Net 3.5 页面)。
我从非 MVC 页面调用 Web 服务(不是 WCF)来填充自动完成。
MVC 部分和非 MVC 部分在我的开发人员机器上都能正常工作。
当我在 IIS 中托管应用程序时,我无法访问 Web 服务中的 Webmethods。我检查了 Firebug 它返回
The controller for path '/payroll/WS/MVCArch.asmx/JqUiGetEmp' was not found or does not implement IController. '
这里我的虚拟目录名称是 Payroll。我的非 MVC 页面位于应用程序根目录下名为“RepDocs”的文件夹下。我的 Web 服务文件夹“WS”也在应用程序的根目录下。该请求是从“RepDocs”文件夹下的非 mvc 页面发送的。
为什么相同的代码可以在 VSHOST
中运行,而不能在 IIS (XP sp3)
中运行?我错过了什么吗?
请帮忙。
编辑
我已经修改了我的 global.asax 以排除路由,如下所示
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.IgnoreRoute("WS/{resource}.asmx/{*pathInfo}");
//routes.IgnoreRoute("{*allasmx}", new { allasmx = @".*\.asmx(/.*)?" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
现在我收到此错误
The HTTP verb POST used to access path '/Payroll/ws/MVCArch.asmx/JqUiGetOffice' is not allowed.
我将以下内容添加到 Web.config
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
还是没有运气。
最佳答案
您必须忽略 Global.asax.cs 中到 Web 服务的路由
routes.IgnoreRoute("{*allasmx}", new {allasmx=@".*\.asmx(/.*)?"});
关于asp.net - 从 Asp.net MVC 访问 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11579497/