在发布模式下为 jwt 令牌请求获取 404

Getting 404 for jwt token request in release mode

我是 ASP.NET 或 C# 编程的新手。在我的新任务中,我致力于添加身份验证中间件、检查 JWT 令牌以进行验证等。 我按照此 URL 将身份验证中间件添加到我的 ASP.net 应用程序 - http://odetocode.com/blogs/scott/archive/2015/01/15/using-json-web-tokens-with-katana-and-webapi.aspx

虽然我在访问 /token url 时已成功获取生成的令牌,但仅在 运行 处于调试模式时这是可能的。如果我将构建配置更改为 Release,访问 /token url,开始给我 404 错误。

我比较了 Visual Studio 2013 输出视图中显示的输出,发现在调试模式下有额外的 2 行在发布模式下没有显示。 这两行是 -

'MetaAPI.vshost.exe'(CLR v4.0.30319:MetaAPI.vshost.exe):已加载 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Extensions\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Extensions.dll'。无法找到或打开 PDB 文件。

'MetaAPI.vshost.exe'(CLR v4.0.30319:MetaAPI.vshost.exe):已加载 'C:\windows\Microsoft.Net\assembly\GAC_32\System.Web\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.dll'。无法找到或打开 PDB 文件。

不知道这些是否说明了问题的根源。我添加了对 System.Web 和 System.Web 的引用。项目的扩展,但没有帮助。

如何解决这个问题?有什么建议吗?

很可能是因为 #if DEBUG 条件

public class MyOAuthOptions : OAuthAuthorizationServerOptions
{
    public MyOAuthOptions()
    {
        TokenEndpointPath = "/token";
        AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(60);
        AccessTokenFormat = new MyJwtFormat();
        Provider = new MyOAuthProvider();
        #if DEBUG // HERE
            AllowInsecureHttp = true;
        #endif
    }
}

Release Mode 中,MyOAuthOptions 预计流量超过 HTTPS。如果您在本地机器或不安全的 http 上测试您的应用程序,只需删除 #if DEBUG#endif 并保留 AllowInsecureHttp = true

记住尽管在生产环境中 HTTPS 是必须的,上面的代码应该可以正常工作。