首先,当我使用 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/