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

时间:2016-05-10 16:11:35

标签: asp.net-web-api owin jwt katana

我是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时成功获取了令牌,但只有在Debug模式下运行时才能实现。如果我将构建配置更改为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&#39 ;.无法找到或打开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&#39 ;。无法找到或打开PDB文件。

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

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

1 个答案:

答案 0 :(得分:2)

很可能是因为#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 ModeMyOAuthOptions预计流量超过HTTPS。如果您在本地计算机或不安全的http上测试应用程序,只需删除#if DEBUG#endif并保留AllowInsecureHttp = true

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