Web API OAuth令牌端点404

Mat*_*att 6 asp.net api oauth owin

我有一个Web窗体解决方案,我正在尝试添加一个自托管的API项目来支持移动请求的交互(使用http://bitoftech.net/2014/06/01/token-based-authentication-asp -net-web-api-2-owin-asp-net-identity /作为我的推荐点).但是,在配置我的OAuth的"TokenEndpointPath"时,我得到了404响应 - 仅在我的生产环境中,该环境由discountasp.net托管.在本地,它的工作完美.

在我的网站项目中,我有一个global.asax,它有一个空的Application_Start()方法.在我的API项目中,我在我的Startup.cs中有这个:

[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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定您可能需要哪些其他信息,但是有人知道为什么我在尝试POST到http:// mydomain/token时会得到404 吗?要明确的是,我的网站项目是返回404响应的项目​​(我正在获取自定义404页面的HTML输出...不是JSON格式的服务器消息或类似的东西).