Asp.net Web API OAuth令牌端点404
我有一个Web表单解决方案,我正在尝试添加一个自托管API项目,以支持来自移动请求的交互(用作我的参考点)。然而,在配置OAuth的“TokenEndpointPath”时,我得到的是404响应——仅在我的生产环境中,该环境托管在discountasp.net上。在本地,它工作得非常完美 在我的网站项目中,我有一个global.asax,它有一个空的应用程序\u Start()方法。在我的API项目中,我在Startup.cs中有以下内容:Asp.net Web API OAuth令牌端点404,asp.net,api,oauth,owin,Asp.net,Api,Oauth,Owin,我有一个Web表单解决方案,我正在尝试添加一个自托管API项目,以支持来自移动请求的交互(用作我的参考点)。然而,在配置OAuth的“TokenEndpointPath”时,我得到的是404响应——仅在我的生产环境中,该环境托管在discountasp.net上。在本地,它工作得非常完美 在我的网站项目中,我有一个global.asax,它有一个空的应用程序\u Start()方法。在我的API项目中,我在Startup.cs中有以下内容: [assembly: OwinStartup(type
[assembly: OwinStartup(typeof(MyDomain.API.Startup))]
namespace MyDomain.API
{
public class Startup
{
public static OAuthBearerAuthenticationOptions OAuthBearerOptions { get; private set; }
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app);
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
public void ConfigureOAuth(IAppBuilder app)
{
//use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
OAuthBearerOptions = new OAuthBearerAuthenticationOptions();
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
Provider = new SimpleAuthorizationServerProvider(),
RefreshTokenProvider = new SimpleRefreshTokenProvider()
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(OAuthBearerOptions);
}
}
}
这是我的API项目的App_Start/WebApiConfig.cs:
namespace MyDomain.API
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
}
}
名称空间MyDomain.API
{
公共静态类WebApiConfig
{
公共静态无效寄存器(HttpConfiguration配置)
{
//Web API路由
config.maphttpAttribute路由();
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
var jsonFormatter=config.Formatters.OfType().First();
jsonFormatter.SerializerSettings.ContractResolver=新的CamelCasePropertyNamesContractResolver();
}
}
}
我不知道你还需要什么其他信息,但有人知道为什么我在发帖子时会得到404吗?要明确的是,我的网站项目是返回404响应的项目(我得到的是自定义404页面的HTML输出…不是JSON格式的服务器消息或类似的格式)。(为了简洁起见,我在代码段中输入了“using”声明)只是想知道,在没有OWIN的情况下,你能点击这个按钮吗?不完全确定你的意思。。。您建议我删除什么来测试它?我建议您确保这不是一个简单的404,并且与authlayer相关。您在这方面有任何进展吗?