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
文件
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector),
new RouteVersionedControllerSelector(GlobalConfiguration.Configuration));
由于我使用的是.Net framework版本4,我使用了包id =" SDammann.WebApi.Versioning"版本=" 2.0.0.3" targetFramework =" net40"
类型' System.NullReferenceException'的例外情况发生在 SDammann.WebApi.Versioning.dll但未在用户代码中处理
附加信息:对象引用未设置为的实例 对象
在 SDammann.WebApi.Versioning.VersionedControllerSelector.GetControllerNameFromRequest(HttpRequestMessage 请求)在z:\ Developing \ Visual 工作室\项目\ SDammann.WebApi.Versioning的\ src \ SDammann.WebApi.Versioning \ VersionedControllerSelector.cs:行 187点 SDammann.WebApi.Versioning.RouteVersionedControllerSelector.GetControllerIdentificationFromRequest(HttpRequestMessage 请求)在z:\ Developing \ Visual 工作室\项目\ SDammann.WebApi.Versioning的\ src \ SDammann.WebApi.Versioning \ RouteVersionedControllerSelector.cs:行 34点 SDammann.WebApi.Versioning.VersionedControllerSelector.SelectController(HttpRequestMessage 请求)在z:\ Developing \ Visual 工作室\项目\ SDammann.WebApi.Versioning的\ src \ SDammann.WebApi.Versioning \ VersionedControllerSelector.cs:行 112点 System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage 请求,取消语音取消语言) System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage 请求,取消语音取消语言)
答案 0 :(得分:0)
我发现问题是什么。我错过了在Route1中添加默认控制器。
工作代码:
config.Routes.MapHttpRoute(
name: "Route1",
routeTemplate: "api/v{version}/Participant/{action}/{id}",
defaults: new { controller: "Participant", id = RouteParameter.Optional }
);