从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> 

仍然没有运气。

+0

你的路径可能是错误的部署。请参阅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

+0

我检查了路径,并且wsdl正确返回,这意味着我的服务已启动并正在运行。页面呈现太正确。唯一不起作用的是对我服务的ajax请求。不知何故,请求结束与控制器不应该是因为请求来自非mvc页面。 – Deb 2012-07-20 15:30:27

你必须忽略对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