我正在和Owin玩耍。我正在使用VS 2017社区并使用IIS Express进行调试。我在项目中添加了Owin启动文件。我已经放置了一些代码并测试了自己创建的AuthServerProvider,但是当我尝试访问/ token以获取令牌时,却不允许使用Method。我得出的结论是没有调用我的Owin启动方法。
查看了数以百万计的问题和解决方案之后(真的很疯狂),我真的不知道是什么解决了这个问题,但是我将Owin类放在一个添加了名称空间的文件夹中,所以我将其移出了,但是现在似乎没有什么关系,因为我使用了告诉它启动的[assembly:OwinStartup(typeof(myApp.Startup))]方法。
然后,我听说您无法进入,因此放入了新的Exception(“ Test”)和一些编写响应的代码。我注意到的一件事是,如果我启动我的应用程序,那么我的网站就会启动,并且不会影响到Owin启动。但是,如果我使用ctrl-F5刷新页面,那么它将达到Owin启动中的水平。
在我刷新chrome页面(不确定是否可以正常工作)后,我正在Postman中尝试我的/ token请求,但这仍然为我提供了不允许的方法,但是它们可能没有任何关联。
我觉得我需要弄清楚为什么要在运行Chrome后刷新页面才能使Owin初创公司受到冲击,我猜这是Postman无法正常工作的相同原因,因为该请求遇到了一些问题正在运行的版本尚未启动Owin,因此我的东西尚未注册。
IIS Express和Owin启动是否存在某些已知问题?我应该注意,我的邮递员是chrome扩展程序,因此必须以某种方式关联。
发布到此/令牌时返回的页面是:
HTTP错误405.0-不允许的方法 您正在寻找的页面无法显示,因为使用了无效的方法(HTTP动词)。
我正在关注本教程,而这正是他的工作:https://youtu.be/rMA69bVv0U8?t=2467
[编辑] 我下载了Postman桌面应用程序。当我具有编写响应的代码时,当我运行在OAuthAuthorizationServerOptions TokenEndpointPath中设置的/ token时,我会在邮递员中看到该响应。
下面是我的Owin启动类
public class Startup
{
public void Configuration(IAppBuilder app)
{
//throw new Exception("Test");
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
// to enable cross origin requests (not sure if we need this)
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
var provider = new AuthServerProvider();
OAuthAuthorizationServerOptions options = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true, // todo: when in prod make this false so it has to be https
TokenEndpointPath = new PathString("/token"), // path of where user will get the token when provided credentials
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), // valid for 1 day
Provider = provider
};
app.UseOAuthAuthorizationServer(options);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.Use((context, next) =>
{
TextWriter output = context.Get<TextWriter>("host.TraceOutput");
return next().ContinueWith(result =>
{
output.WriteLine("Scheme {0} : Method {1} : Path {2} : MS {3}",
context.Request.Scheme, context.Request.Method, context.Request.Path, getTime());
});
});
app.Run(async context =>
{
await context.Response.WriteAsync(getTime() + " My First OWIN App");
});
}
string getTime()
{
return DateTime.Now.Millisecond.ToString();
}
}