[英]SDammann.WebApi.Versioning : asp.net versioning
config.Routes.MapHttpRoute(
name: "Route1",
routeTemplate: "api/v{version}/Participant/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "Route2",
routeTemplate: "api/v{version}/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: null,
handler : new TokenValidationHandler()
);
我的控制器是ParticipantController
。
如果添加兩條路由,則會從SDamman dll中引發異常(對象空引用錯誤)。 我需要兩條路由,僅為“ Route2”添加一個MessageHandler
。
有人可以協助我嗎?
我在global.asax.cs
文件中添加了以下global.asax.cs
行
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector),
new RouteVersionedControllerSelector(GlobalConfiguration.Configuration));
由於我使用的是.Net Framework版本4,因此我使用了包id =“ SDammann.WebApi.Versioning” version =“ 2.0.0.3” targetFramework =“ net40”
SDammann.WebApi.Versioning.dll中發生類型為'System.NullReferenceException'的異常,但未在用戶代碼中處理
附加信息:對象引用未設置為對象的實例。
在SDammann.WebApi上的z:\\ Developing \\ Visual Studio \\ Projects \\ SDammann.WebApi.Versioning \\ src \\ SDammann.WebApi.Versioning \\ VersionedControllerSelector.cs:line 187處SDammann.WebApi.Versioning.VersionedControllerSelector.GetControllerNameFromRequest(HttpRequestMessage request)處。 z:\\ Developing \\ Visual Studio \\ Projects \\ SDammann.WebApi.Versioning \\ src \\ SDammann.WebApi.Versioning \\ RouteVersionedControllerSelector.cs:SDammann.WebApi.Versioning.VersionedControllerSelectorSelect上的第34行的Versioning.RouteVersionedControllerSelector.GetControllerIdentificationFromRequest(HttpRequestMessage request) z:\\ Developing \\ Visual Studio \\ Projects \\ SDammann.WebApi.Versioning \\ src \\ SDammann.WebApi.Versioning \\ VersionedControllerSelector.cs:System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage請求)中的(HttpRequestMessage請求) ,在System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage request,Can cellationToken cancellingToken)
我發現問題出在哪里。 我錯過了在Route1中添加默認控制器的信息。
工作代碼:
config.Routes.MapHttpRoute(
name: "Route1",
routeTemplate: "api/v{version}/Participant/{action}/{id}",
defaults: new { controller: "Participant", id = RouteParameter.Optional }
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.