2015-05-31 28 views
5

In primo luogo, tutto funziona quando viene eseguito da Visual Studio utilizzando iis express.Owin OAuth localhost/Token restituisce 404

Ho un Asp.Net Web Api che esegue Owin OAuth. Questa è la parte di configurazione della mia classe Startup:

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()); 
} 

Questa è la parte Register della mia 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 } 
    ); 
} 

Ho schierato questa applicazione su IIS versione 8.5 * e tutto funziona tranne il localhost/Token endpoint. . È un progetto combinato MVC + Web Api.

Utilizzo il pool di applicazioni .NET v4.5 (versione .NET CLR: 4.0) con la modalità pipeline integrata e Microsoft.Owin.Host.SystemWeb.dll è presente nella cartella bin.

Perché ottengo 404 quando faccio una richiesta all'endpoint Token?

+0

Hai impostato 'runAllManagedModulesForAllRequests' su true come in [questa risposta SO] (http://stackoverflow.com/questions/24101432/configure-an-owin-static-file-server-at-a-specific-route -prefisso)? –

+0

Sì, non funziona neanche. –

+0

Qualche aggiornamento qui? –

risposta

7

Ho avuto lo stesso problema. Ecco il problema:

#if DEBUG 
    AllowInsecureHttp = true, 
#endif 

sul Posto (IISExpress), si sta eseguendo una build di debug e la vostra direttiva del compilatore imposta la AllowInsecureHttp a true. Ciò significa che puoi chiedere un nuovo token OAuth sia su http che su https.

Il deploy di IIS significa che per prima cosa si esegue una build di RELEASE. Quindi la direttiva del compilatore omette la riga AllowInsecureHttp. La proprietà predefinita è false, il che significa che è possibile ottenere solo un token OAuth su http s. Se provi a chiedere un token tramite http, il server risponderà con un 404.

Problemi correlati