我最近开始学习如何使用Owin规范。我已经将Owin包添加到了Web API 2项目中。我注释掉WebApiConfig的使用,和移动路线配置和ELMAH记录器来启动类,你可以看到下面 -OWIN中间件似乎没有工作
Startup.cs - [assembly: OwinStartup("DataServicesStartup", typeof (Startup))]
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
var config = new HttpConfiguration();
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new {id = RouteParameter.Optional});
config.Services.Add(typeof (IExceptionLogger), new ElmahExceptionLogger());
ConfigureAuth(app);
JwtConfig.ConfigureOAuth(app);
app.UseWebApi(config);
}
注释掉WebApiConfig用法 -
protected void Application_Start()
{
WebLocatorIoC.RegisterServices();
AreaRegistration.RegisterAllAreas();
//GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
然而,当我米试图去指定的路线没有任何反应。例如,当我尝试向Controllers/ValuesController发出请求时,我使用localhost:1111/api/values。 Owin.Cors似乎也不能工作。只有当我在WebApiConfig中使用路由和Cors时,它才起作用,在这种情况下是WebApi.Cors。
我已经安装了以下Owin包:
Microsoft.AspNet.Identity.Owin
Microsoft.AspNet.WebApi.Owin
Microsoft.Owin
Microsoft.Owin.Cors.
Microsoft.Owin.Diagnostics
Microsoft.Owin.Host.HttpListener
Microsoft.Owin.Host.SystemWeb
Microsoft.Owin.Hosting
Microsoft.Owin.Security
Microsoft.Owin.Security.Cookies
Microsoft.Owin.Security.Facebook
Microsoft.Owin.Security.Google
Microsoft.Owin.Security.Jwt
Microsoft.Owin.Security.Microsoft
Microsoft.Owin.Security.OAuth
Microsoft.Owin.Security.Twitter
Microsoft.Owin.SelfHost
Ninject.Web.Common.OwinHost
Ninject.Web.WebApi.OwinHost
Owin
所以,可能有人请给我一个关于我在做什么错误提示。
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
//Other action methods were omitted
}
更新:增加了OWIN启动属性。
你可以显示你试图命中的控制器以及你试图连接的控制器吗? –
路由 - “api/{controller}/{id}”。例如,默认值controller - api/values。它找不到任何控制器。因为,据我所知,Owin不处理 - config.Routes.MapHttpRoute(“DefaultApi”,“api/{controller}/{id}”,new {id = RouteParameter.Optional}); – renchan
它处理得很好。你能显示你的控制器吗? –