調用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 }
);
}
}


