2015-11-18 92 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