nswag 404 после включения запуска - PullRequest
0 голосов
/ 21 сентября 2018

У меня был существующий проект global.asax, в который я без проблем добавил nswag, следуя этому набору инструкций:

https://github.com/RSuter/NSwag/wiki/OwinGlobalAsax

Однако позже я настроил сервер oauth в том жепроект.В этом случае я добавил файл OwinStartup и отменил шаг # 2 в приведенной выше ссылке, установив для AutomaticAppStartup значение true:

  <add key="owin:AutomaticAppStartup" value="true" /> <!--https://github.com/RSuter/NSwag/wiki/OwinGlobalAsax-->

Я успешно смог использовать свой oauth-сервер, но без значения AutomaticAppStartup, установленного наfalse, ссылка / Swagger просто возвращает 404. Я попытался переместить запуск swagger в метод OwinStartUp, но это также не сработало.

OwinStartup (swagger не работает):

public partial class OwinStartup
{
    public void Configuration(IAppBuilder app)
    {
        //DOESN'T WORK
        ConfigureSwagger(app);
        //DOES WORK
        ConfigureOAuth(app);

        WebApiConfig.Register(new HttpConfiguration());
    }

    public void ConfigureSwagger(IAppBuilder app)
    {
        app.UseSwaggerUi(typeof(MvcApplication).Assembly, settings =>
                {
                //settings.GeneratorSettings.ActualSerializerSettings.Converters.Add(new HypermediaInjectorJsonConverter());
                //settings.GeneratorSettings.ContractResolver = new HypermediaContractResolver();
                settings.MiddlewareBasePath = "/swagger";
                    settings.GeneratorSettings.Title = "My API";
                });
    }
    public static void ConfigureOAuth(IAppBuilder app)
    {


        //var secret = TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings["secret"]);
        var secret = Security.Secret;

        app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions
        {

            AuthenticationMode = AuthenticationMode.Active,
            AllowedAudiences = new[] { Security.Audience },
            IssuerSecurityKeyProviders = new IIssuerSecurityKeyProvider[]
            {
                new SymmetricKeyIssuerSecurityKeyProvider(CustomJwtFormat.Issuer, CustomJwtFormat.Secret)
            }
        });
        app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/oauth2/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30),
            Provider = new CustomOAuthProvider(),
            AccessTokenFormat = new CustomJwtFormat()
        });
    }

}

Global.asax (oauth не работает):

    protected void Application_Start()
    {
        HypermediaConfig.Setup();

       //DOES WORK!
        RouteTable.Routes.MapOwinPath("swagger", app =>
        {
            OwinStartup.ConfigureSwagger(app);
        });

        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        //DOESN'T WORK
        RouteTable.Routes.MapOwinPath("oauth2", app =>
        {
            OwinStartup.ConfigureOAuth(app);
        });


    }

В настоящее время я нахожусь в процессе создания нового проекта owin, чтобы посмотреть, решит ли это проблему.Тем не менее, я все еще хотел бы разобраться в проблемах с приведенными выше случаями:

Почему nswag не работает (404) при инициализации через OwinStartup на веб-сайте global.asax?

И oauth не работает (404) при инициализации через global.asax?

...