Owin OAuth localhost / Token返回404

时间:2015-05-31 23:36:24

标签: c# asp.net .net iis

首先,当我使用iis express从Visual Studio运行它时,一切正常。

我有一个运行Owin OAuth的Asp.Net Web Api。这是我的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());
}

这是Register

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

我已在IIS 8.5版本上部署此应用程序。*除了localhost/Token端点外,一切正常。它是一个MVC + Web Api项目组合。

我正在使用具有集成管道模式的.NET v4.5应用程序池(.NET CLR版本:4.0),并且bin文件夹中存在Microsoft.Owin.Host.SystemWeb.dll

为什么在向令牌端点发出请求时会收到404?

2 个答案:

答案 0 :(得分:10)

我有同样的问题。这是你的问题:

#if DEBUG
    AllowInsecureHttp = true,
#endif

在本地(IISExpress),您正在运行DEBUG构建,并且您的编译器指令将AllowInsecureHttp设置为true。这意味着您可以通过http和https提出新的OAuth令牌。

部署到IIS意味着您首先执行RELEASE构建。因此编译器指令省略了AllowInsecureHttp行。该属性默认为false,这意味着您只能通过http s 获取OAuth令牌。如果您尝试通过http询问令牌,服务器将使用404回答。

答案 1 :(得分:0)

安装Nuget包Microsoft.Owin.Host.SystemWeb,因为您的处理程序未注册。

如果仍然无法正常运行,则在web.config文件中添加以下处理程序

    

GITHUB_AUTH_TOKEN