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