Owin Startup类未触发

时间:2019-02-06 00:37:01

标签: owin postman

我正在和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();
        }
    }

0 个答案:

没有答案