MVC里面調用webservice


調用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 }
        );
    }
}
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM