ASP.NET MVC 中宿主WCF Rest 服务的解决方法
我這里就是通過routes.MapRoute(參數(shù))中的參數(shù)進(jìn)行處理的。MapRoute的重載如下:
RouteTable.Routes.MapRoute( string name, string url); RouteTable.Routes.MapRoute( string name, string url, object defaults); RouteTable.Routes.MapRoute( string name, string url, string[] namespaces); RouteTable.Routes.MapRoute( string name, string url, object defaults, object constraints); RouteTable.Routes.MapRoute( string name, string url, object defaults, string[] namespaces); RouteTable.Routes.MapRoute( string name, string url, object defaults, object constraints, string[] namespaces);?
name參數(shù):規(guī)則名稱可以隨意取,但是不能重名,否則會報錯。路由集合中已經(jīng)存在為“default”的路由。路由名必須是唯一的。
Url參數(shù):url獲取數(shù)據(jù)的規(guī)則,這里不是正則表達(dá)式,將要識別的參數(shù)括起來就可以了,比如{controller}/{action}
注:最少只需要傳遞name,url參數(shù),就可以建立一條Routing規(guī)則。比如實例中可改為: RouteTable.Routes.MapRoute("Default", "{controller}/{action}");,
defaults參數(shù):url參數(shù)中的默認(rèn)值,如果一個URL只有controller:localhost /home/,而我們只建立了一條url獲取數(shù)據(jù)規(guī)則:{controller}/{action},這時就會為action參數(shù)設(shè)置defaults參數(shù)中規(guī)定的默認(rèn)值,defaults是Object類型,可以傳遞一個匿名類型來初始化默認(rèn)值。(action也就是index調(diào)用方法Userdetail())
new { controller = "Home", action = "Userdetail" });
constraints參數(shù):用來限定每個參數(shù)的規(guī)則或Http請求的類型,constraints屬性是一個RouteValueDictionary對象,也就是一個字典代表,字典的值可以有兩種:a,用來定義正則表達(dá)式的字符串,正則表達(dá)式不區(qū)分大小寫。B,用于實現(xiàn)IRouteConstraint接口且包含Match方法的對象。通過正則表達(dá)式可以規(guī)定參數(shù)格式,比如controller參數(shù)只能為4位數(shù)字:new {controller=@”\d{4}”}
public static void RegisterRoutes(RouteCollection routes) {//忽略對.axd文件的Route,也就是和WebForm一樣直接去訪問.axd文件routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.IgnoreRoute("{resource}.ashx/{*pathInfo}");routes.MapRoute("Default", // Route name"{controller}/{action}/{id}", // URL with parametersnew { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaultsnew { controller = @"^\b(?!GetRegSourceData)\w*\b$"});routes.Add(new ServiceRoute("GetRegSourceData", new WebServiceHostFactory(), typeof(GetRegSourceData)));}查看以上代碼 其中new { controller = @"^\b(?!GetRegSourceData)\w*\b$"}? 過濾掉Controller為GetRegSourceData的URI.
然后就會去匹配WCF Rest Service的Route
routes.Add(new ServiceRoute("GetRegSourceData", new WebServiceHostFactory(), typeof(GetRegSourceData)));?
轉(zhuǎn)載于:https://www.cnblogs.com/aehyok/archive/2012/11/21/2781067.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET MVC 中宿主WCF Rest 服务的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 灰帽黑客:正义黑客的道德规范、渗透测试、
- 下一篇: 2019Q1欧洲智能手机出货量 华为1