c# - Owin OAuth 本地主机/ token 返回 404

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

这是我的 WebApiConfig.cs

Register 部分
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)并且 Microsoft.Owin.Host.SystemWeb.dll 存在于 bin 文件夹中。

当我向 Token 端点发出请求时,为什么会收到 404?

最佳答案

我遇到了同样的问题。这是您的问题:

#if DEBUG
    AllowInsecureHttp = true,
#endif

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

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

关于c# - Owin OAuth 本地主机/ token 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30563814/

相关文章:

asp.net - Azure 移动服务 : migrate to non-Azure Windows Server

c# - Azure 存储表 ExecuteAsync 在 Retrieve TableOperation 上挂起

c# - 如何使用 linq to entities 对所有按月记录求和?

c# - 如何将 IList<x> 转换为 JSON 字符串并返回?

javascript - 如何在 UpdatePanel 异步调用完成后重新应用 .css 文件

c# - 如何在 .net 中将 json 解析为 html

.net - 无法在 Azure Devops 上使用 DotNetCoreCLI 任务恢复 .Net Core 解决方案

c# - 方法重载解析如何工作(LINQ Where 扩展方法)?

c# - 无法加载文件或程序集 'Microsoft.SqlServer.Smo,版本 = 10.0.0

c# - 从 Javascript 触发回发失败