从Asp.net MVC访问Webservice
问题描述:
我有一个MVC2
应用程序,其中还包括一个非MVC部分(常规Asp.Net 3.5页)。从Asp.net MVC访问Webservice
我从非MVC页面调用Web服务(不是WCF)来填充自动填充。
MVC部件和非MVC部件在我的开发人员机器中都能正常工作。
当我在IIS中托管我的应用程序时,我无法访问我的web服务中的webmethods。我检查了萤火虫它返回
The controller for path '/payroll/WS/MVCArch.asmx/JqUiGetEmp' was not found or does not implement IController. '
在这里我的虚拟目录名称是薪资。而我的非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>
仍然没有运气。
答
你必须忽略对Web服务的路线Global.asax.cs中
routes.IgnoreRoute("{*allasmx}", new {[email protected]".*\.asmx(/.*)?"});
+0
使用你的建议后,我得到System.Web.HttpException:HTTP动词POST用于访问路径'/payroll/ws/MVCArch.asmx/JqUiGetOffice'是不允许的。 – Deb 2012-07-20 17:44:13
你的路径可能是错误的部署。请参阅http://blogs.msdn.com/b/rickandy/archive/2011/04/22/test-you-asp-net-mvc-or-webforms-application-on-iis-7-in-30-seconds .aspx - – RickAndMSFT 2012-07-20 15:20:16
我检查了路径,并且wsdl正确返回,这意味着我的服务已启动并正在运行。页面呈现太正确。唯一不起作用的是对我服务的ajax请求。不知何故,请求结束与控制器不应该是因为请求来自非mvc页面。 – Deb 2012-07-20 15:30:27