在发布模式下为 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 是必须的,上面的代码应该可以正常工作。
我是 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 是必须的,上面的代码应该可以正常工作。