2015-05-31 14 views
5

Po pierwsze, wszystko działa, gdy uruchomię go z Visual Studio przy użyciu iis express.Owin OAuth localhost/Token zwraca 404

Mam ap.NET sieci Web Asp. z Owin OAuth. Jest to część konfiguracji mojego Startup klasy:

private static void ConfigureAuth(IAppBuilder app) 
{ 
    var oAuthOptions = new OAuthAuthorizationServerOptions 
    { 
    #if DEBUG 
     AllowInsecureHttp = true, 
    #endif 
     TokenEndpointPath = new PathString("/Token"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(30), 
     Provider = new ApplicationOAuthProvider() 
    }; 

    app.UseOAuthAuthorizationServer(oAuthOptions); 
    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 
} 

To Register częścią mojego WebApiConfig.cs

public static void Register(HttpConfiguration config) 
{ 
    // Web API configuration and services 
    config.SuppressDefaultHostAuthentication(); 
    config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 

    var cors = new EnableCorsAttribute("*", "*", "*"); 
    config.EnableCors(cors); 

    // Web API routes 
    config.MapHttpAttributeRoutes(); 

    // OData 
    var builder = new ODataConventionModelBuilder(); 
    builder.EntitySet<Employee>("Employee"); 
    config.MapODataServiceRoute(
     routeName: "ODataRoute", 
     routePrefix: "odata/", 
     model: builder.GetEdmModel() 
    ); 

    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
    ); 
} 

I wdrożyli tej aplikacji na IIS w wersji 8.5 * i wszystko działa z wyjątkiem końcowego localhost/Token. . Jest to połączony projekt MVC + Web Api.

Używam puli aplikacji .NET v4.5 (.NET CLR wersja: 4.0) ze zintegrowanym trybem potoku i Microsoft.Owin.Host.SystemWeb.dll jest obecny w folderze bin.

Dlaczego otrzymuję 404, gdy wysyłam żądanie do punktu końcowego tokena?

+0

Czy ustawiłeś 'runAllManagedModulesForAllRequests' na true, jak w [this SO answer] (http://stackoverflow.com/questions/24101432/configure-an-owin-static-file-server-at-a-specific-route -prefiks)? –

+0

Tak, to też nie działa. –

+0

Każda aktualizacja tutaj? –

Odpowiedz

7

Miałem ten sam problem. Oto problem:

#if DEBUG 
    AllowInsecureHttp = true, 
#endif 

lokalnie (IISExpress), używasz kompilacji debugowania i Twój dyrektywa kompilator ustawia AllowInsecureHttp do true. Oznacza to, że możesz poprosić o nowy token OAuth zarówno w http, jak i https.

Wdrażanie do usług IIS oznacza, że ​​najpierw należy wykonać kompilację RELEASE. Dlatego dyrektywa kompilująca pomija linię AllowInsecureHttp. Domyślna właściwość to false, co oznacza, że ​​możesz uzyskać token OAuth tylko przez http s. Jeśli spróbuj zapytać tokena przez http, serwer odpowie numerem 404.

Powiązane problemy