2012-07-20 55 views
2

我有一個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

回答

2

你必須忽略對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