我有一個自託管的asp.net web api。我有幾個API工作正常。所有要求都達到API方法並且響應客戶。 現在我嘗試爲web-api添加授權。CreatePerOwinContext在owin自我託管的web-api中導致404響應
我通過添加AUTH SECTION來更改我的啓動配置。
static void Main(string[] args)
{
StartOptions startOptions = new StartOptions();
startOptions.Urls.Add("https://*:44305/");
startOptions.Urls.Add("http://*:9001/");
using (Microsoft.Owin.Hosting.WebApp.Start<dobStartUp>(startOptions))
{
//...
}
}
public class dobStartUp
{
public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
public static string PublicClientId { get; private set; }
public void Configuration(IAppBuilder app)
{
//----AUTH SECTION---
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
// PublicClientId = "self";
// OAuthOptions = new OAuthAuthorizationServerOptions
// {
// TokenEndpointPath = new PathString("/Token"),
// Provider = new ApplicationOAuthProvider(PublicClientId),
// AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
// AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
// AllowInsecureHttp = true
// };
// app.UseOAuthBearerTokens(OAuthOptions);
//-------------
var config = new HttpConfiguration();
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.Services.Replace(typeof(IAssembliesResolver),new dobAssembliesResolver());
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings();
// config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new Common.dobJsonContractResolver();
var container = new UnityContainer();
container.RegisterType<IdobRDBRepository, dobRDBRepository>(new TransientLifetimeManager());
container.RegisterType<IResourcesContentRepository, AS3ContentRepository>(new TransientLifetimeManager());
SystemDiagnosticsTraceWriter traceWriter = config.EnableSystemDiagnosticsTracing();
traceWriter.IsVerbose = false;
traceWriter.MinimumLevel = TraceLevel.Debug;
config.DependencyResolver = new UnityDependencyResolver(container);
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
}
}
當我在AUTH-部分使用app.CreatePerOwinContext,方法可以創建appDbContext和appUserManager被調用,但我對每個API方法404個responces。當我不這樣調用這些CreatePerOwinContext方法時,每個工作都照常進行。我知道我可以使用IoC容器來創建dbContext和userManager的實例,但是我想了解我的app.CreatePerOwinContext和404響應的當前問題。 預先感謝大家。
我不確定你的解決方案是什麼。你可以粘貼你的新代碼嗎?謝謝! – Matt 2015-01-25 02:00:16