调用WebService报错404问题 (转载)

我想在MVC4的项目添加一个webservice文件,访问没问题,但是最后调用方法就报404错误。
但是如果我全新ASP.NET 空Web应用程序 然后再添加一个webservice文件,就一切OK。
下面说下流程并上图
--------------------------------------------------------------
先是新建MVC项目

然以选一个空的模板,并且选razor

然后项目就系统自动生成了,然后我再添加一个asmx文件当做webservice

好 直接运行 因为我直接放在项目根目录下,所以url指定为(系统给的本地默认端口号)/webservice1.asmx,访问没问题 调用就出问题了,报404,如下图

-----------------------------------------------------------------------------------------------------------------

然后我新建一个ASP.NET的空项目,不用MVC ,还是全部系统默认,

然后同样按照上面步骤在根目录新加一个webservice1.asmx,然后就能正常调用了

这个是怎么回事呢?请求一下解决方案,我使用的VS2013 PRO
请求一下解决方案

答案

这是由于ASP.NET MVC路由将asmx的调用当成MVC的路径去解析了,但是实际上WEB SERVICE的asmx调用和MVC没有半毛钱关系,所以要在MVC的路由中加入asmx文件路径的例外,让ASP.NET MVC的路由不去解析带.asmx的URL路径,而交由ASP.NET的Pipeline去负责asmx文件。

代码如下所示,注意将routes.IgnoreRoute("{resource}.asmx/{*pathInfo}")加入到MVC的全局路由配置文件RouteConfig.cs即可:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

原文链接

时间: 2024-11-08 14:32:20

调用WebService报错404问题 (转载)的相关文章

php调用webservice报错Class 'SoapClient' not found

原文:php调用webservice报错Class 'SoapClient' not found php在调用webservice时,报告如下类似错误: ( ! ) Fatal error: Class 'SoapClient' not found in E:/WebSrv/CI/system/libraries/WebService.php on line 17 解决方法: 打开php.ini,找到php_soap.dll , 把前面的分号去掉 ;extension=php_soap.dll

php调用webservice报错Class 'SoapClient' not found(转)

php在调用webservice时,报告如下类似错误: ( ! ) Fatal error: Class 'SoapClient' not found in E:/WebSrv/CI/system/libraries/WebService.php on line 17 解决方法: 打开php.ini,找到php_soap.dll , 把前面的分号去掉 ;extension=php_soap.dll 前提是,已经安装了 php_soap.dll php调用webservice报错Class 'So

cxf客户端调用webservice报错:NoSuchMethod org.apache.commons.xml.XmlSchema.read

cxf客户端项目部署在weblogic中的时候,调用cxf webservice服务端接口时,出现如下错误: 在网上搜索过很多资料,说是jar 包版本过低,将XmlSchema-1.4.5.jar 包换成XmlSchema-2.0.1.jar 之后,还是不行. 原因是:weblogic在服务器上运行时使用的是jrokit的JDK,jrokit中已经有相关的jar包, 会优先加载jrokit/jre/lib目录下的jar包, 解决办法: 在weblogic的使用的JRockit的jre/lib目录

多线程“尚未调用coinitialize” 报错

关于多线程中创建使用TADOConnect.TADODataSet等Com组件时,必须先初始化Com 在多线程启用执行前 CoInitialize(nil); 在多线程启用执行后 CoUninitialize; 多线程"尚未调用coinitialize" 报错

linux上安装ORACLE_10.2.0提示缺少系统安装包libXp.so.6,调用jdk报错

今天在VWMARE上做了下Linux, oracle 的安装实验, 我系统环境配置: OS:Linux test 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686 i686 i386 GNU/Linux Database: 10201_database_linux32.iso 在安装ORACLE软件的时候突然出现如下的错误: [[email protected] database3]$ ./runInstaller Starting Or

Unity 3D 使用TerrainCompose 调用RTP 报错:

Unity 3D:5.2 version TerrainCompose:1.92 version RTP:3.2d version Unity 3D  使用TerrainCompose 调用RTP 报错: Can't access alphamapTexture directly...UnityEngine.Debug:LogError(Object)ReliefTerrain:GetControlMaps() (at Assets/ReliefPack/Scripts/ReliefTerrai

WebService报错: No such operation: (HTTP GET PATH_INFO: /flexcc/flexccService/flexccApp)

WebService报错: No such operation: (HTTP GET PATH_INFO: /flexcc/flexccService/flexccApp) org.apache.cxf.interceptor.Fault: No such operation: (HTTP GET PATH_INFO: /flexcc/flexccService/flexccApp) at org.apache.cxf.interceptor.URIMappingInterceptor.hand

Webservice报错java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlBeanDefinitionRead

用spring集成发布一个Webservice服务,老是报错: java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlBeanDefinitionReader.setValidationMode(I)V at org.apache.xbean.spring.context.v2.XBeanXmlBeanDefinitionReader.<init>(XBeanXmlBeanDefinitionReader.j

请求一个方法,后台能正常执行,前台报错404

************请求一个方法,后台能正常执行,前台报错404************ 前言:我是通过ajax请求,虽然后台能正常执行, 但是ajax却不能执行success方法,执行了error方法. 前台报错404,说找不到XX.jsp页面. 后台方法是一个没有返回值的方法. 分析:找不到页面,说明是去寻找视图解析器了.那么我们这个不需要返回,怎么办呢. 分析后发现,后台的方法要么是请求modelAndView,要么返回的是json. 所以我们这个方法虽然没有返回,但是还是要在方法上写