2015-11-18 47 views
0

我最近开始学习如何使用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启动属性。

+0

你可以显示你试图命中的控制器以及你试图连接的控制器吗? –

+0

路由 - “api/{controller}/{id}”。例如,默认值controller - api/values。它找不到任何控制器。因为,据我所知,Owi​​n不处理 - config.Routes.MapHttpRoute(“DefaultApi”,“api/{controller}/{id}”,new {id = RouteParameter.Optional}); – renchan

+0

它处理得很好。你能显示你的控制器吗? –

回答

0

我想你至少缺少一个NuGet包。您可能需要Microsoft.AspNet.WebApi.Core,您可能需要Microsoft.AspNet.WebApi.Client来处理内容协商。

+0

令人惊讶的是,我安装了它们两个。无论如何感谢您的帮助。 – renchan