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 (对象空引用错误)引发异常。我需要两条路线,只为“MessageHandler”添加一个Route2。
有人能帮我吗?
我在global.asax.cs文件中添加了下面的行
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector),
new RouteVersionedControllerSelector(GlobalConfiguration.Configuration));自从我使用.Net框架版本4以来,我使用了包id="SDammann.WebApi.Versioning“version="2.0.0.3”targetFramework="net40“
异常细节
“System.NullReferenceException”类型的异常发生在SDammann.WebApi.Versioning.dll中,但未在用户代码中处理 附加信息:对象引用未设置为对象的实例。 (应SDammann.WebApi.Versioning.VersionedControllerSelector.GetControllerNameFromRequest(HttpRequestMessage请求) z:\Developing\ VisualStudio\Projects\SDammann.WebApi.Versioning\src\SDammann.WebApi.Versioning\VersionedControllerSelector.cs:line 187 (应SDammann.WebApi.Versioning.RouteVersionedControllerSelector.GetControllerIdentificationFromRequest(HttpRequestMessage请求)在z:\Developing\VisualStudio\Projects\SDammann.WebApi.Versioning\src\SDammann.WebApi.Versioning\RouteVersionedControllerSelector.cs:line 34 (应SDammann.WebApi.Versioning.VersionedControllerSelector.SelectController(HttpRequestMessage请求)在z:\Developing\Visual Studio\Projects\SDammann.WebApi.Versioning\src\SDammann.WebApi.Versioning\VersionedControllerSelector.cs:line 112应System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage请求,应System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage请求CancellationToken CancellationToken (CancellationToken cancellationToken)
发布于 2014-08-12 06:31:27
我发现了问题所在。我错过了在Route1中添加默认控制器。
工作代码:
config.Routes.MapHttpRoute(
name: "Route1",
routeTemplate: "api/v{version}/Participant/{action}/{id}",
defaults: new { controller: "Participant", id = RouteParameter.Optional }
);https://stackoverflow.com/questions/25247035
复制相似问题