我有一个我通过File>创建的项目;新>项目> Azure移动应用
我已在HttpConfiguration
方法中为ConfifgureMobileApp()
添加了路线。
代码看起来像这样。特别是config.Routes.MapHttpRoute(...)
行。
private static void ConfigureMobileApp(IAppBuilder app, ContainerBuilder builder)
{
var config = new HttpConfiguration();
builder.RegisterModule(new WebApiModule(config));
var container = builder.Build();
config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
//For more information on Web API tracing, see http://go.microsoft.com/fwlink/?LinkId=620686
config.EnableSystemDiagnosticsTracing();
config.Filters.Add(new CultureThreadingAttribute());
config.Routes.MapHttpRoute("DefaultApi", "api/{culture}/{controller}/{id}", new { id = RouteParameter.Optional });
new MobileAppConfiguration()
.AddTablesWithEntityFramework()
.MapApiControllers()
.ApplyTo(config);
MobileAppSettingsDictionary settings = config.GetMobileAppSettingsProvider().GetMobileAppSettings();
if (string.IsNullOrEmpty(settings.HostName))
{
// This middleware is intended to be used locally for debugging. By default, HostName will
// only have a value when running in an App Service application.
app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions
{
SigningKey = ConfigurationManager.AppSettings["SigningKey"],
ValidAudiences = new[] { ConfigurationManager.AppSettings["ValidAudience"] },
ValidIssuers = new[] { ConfigurationManager.AppSettings["ValidIssuer"] },
TokenHandler = config.GetAppServiceTokenHandler()
});
}
app.UseAutofacWebApi(config);
app.UseAutofacMiddleware(container);
}
但这条路线没有被捡起来。在我的中间件中,我从OwinContext.Environment
字典中获取了{System.Web.Routing.RouteData}对象,它不包含任何路由。
我正在使用https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-dotnet-backend-how-to-use-server-sdk,特别是,我通过在调用ApplyTo(config)
之前映射路线来遵循该文章的建议。
此外,我的操作过滤器CultureThreadingAttribute
会根据路由中的culture
更改线程的区域设置,但无法获取。
我怀疑在我的应用中有多个HttpConfiguration
个对象在运行。有办法解决这个问题吗?
答案 0 :(得分:1)
您的文化路线和MobileApps API的路线可能相互冲突。调试路由处理程序将确认它。设置断点并在呼叫进入时查看路由表。
[MobileAppController]属性没什么神奇之处 - 它只是强制执行ZUMO-API-VERSION。您可以删除.MapApiControllers()元素,并为API控制器使用常规ASP.NET MVC路由。这将简化您的API路线定义。