2

我有一个MVC2应用程序,其中还包括一个非 MVC 部分(常规 Asp.Net 3.5 页面)。

我从非 MVC 页面调用 web 服务(不是 WCF)来填充自动完成。

MVC 部分和非 MVC 部分在我的开发人员机器上都可以正常工作。

当我在 IIS 中托管我的应用程序时,我无法访问我的网络服务中的网络方法。我检查了它返回的萤火虫

The controller for path '/payroll/WS/MVCArch.asmx/JqUiGetEmp' was not found or does not implement IController. '

这里我的虚拟目录名称是 Payroll。我的非 MVC 页面位于应用程序根目录下名为“RepDocs”的文件夹下。我的 Webservice 文件夹“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>

仍然没有运气。

4

1 回答 1

2

您必须忽略 Global.asax.cs 中到 Web 服务的路由

routes.IgnoreRoute("{*allasmx}", new {allasmx=@".*\.asmx(/.*)?"});
于 2012-07-20T15:53:48.303 回答