簡體   English   中英

SDammann.WebApi.Versioning:ASP.NET版本控制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM