Browsed by
Tag: C#

[ASP.NET] Web Service (.asmx) 遇到404問題

[ASP.NET] Web Service (.asmx) 遇到404問題

昨天在傳統Web Service (.asmx)上遇到直接存取.asmx頁面正常,可秀出Documentation說明(如果Web.Config沒有將Documentation remove掉的話),但POST/GET過去IIS會回應404 Not Found的問題。

查了老半天,才發現是專案類型為ASP.NET MVC專案導致的,會將:

http://{site}/Foo.asmx/Bar

這類的URL,以MVC的路由來處理,因為找不到對應的Controller,自然就得到404。

解決方法是在 RouteConfig.cs 新增 .asmx 檔的處理規則:

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