asp.net - 从 Asp.net MVC 访问 Web 服务

标签 asp.net asp.net-mvc web-services asp.net-mvc-2

我有一个 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/

相关文章:

asp.net - 如何在成员(member) asp.net 2008 中获取当前用户名

c# - 向 session 添加值时出现 NullReferenceException

javascript - JSON 和反斜杠

java - 连接到需要证书的 Web 服务时出错

Android - 如何处理 XML 中的 Web 服务?

c# - 如何获取 HtmlGenericControl 的属性值?

c# - 在操作中获取空参数

c# - ASP.NET MVC : Verify that editing record is allowed (ownership)

asp.net-mvc - 如何使用 Asp.Net MVC 框架创建主从 View

java:带有西里尔字符的 HttpURLConnection