我最近開始學習如何使用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
它處理得很好。你能顯示你的控制器嗎? –