OWIN中间件似乎无法正常工作

时间:2015-11-18 16:20:25

标签: c# asp.net-web-api2 owin middleware

我最近开始学习如何使用Owin规范。我已经将下面列出的Owin软件包添加到Web API 2项目中。我已经注释掉WebApiConfig的用法,并将路由配置和Elmah Logger移动到Startup类,如下所示 -

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启动属性。

1 个答案:

答案 0 :(得分:0)

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