Asp.net Odata Web API Ошибка предпросмотра пут в исходном и браузерном запросах Pacth - PullRequest
0 голосов
/ 23 октября 2018

Вскоре я попытаюсь описать мою проблему.

Когда я пытаюсь выполнить свои действия в API с Почтальоном, у Fiddler все работает нормально.Но когда дело доходит до браузера Ajax, запрос 'OPTIONS' кажется, что мой API не обрабатывает метод 'OPTIONS'.

Кстати, мое действие «Получить» и «Опубликовать» работает как брелок в браузере.

Мои попытки:

  1. Включить Cors (OK) пробовал либо web.config, либо global.asax
  2. Я пытался Application_BeginRequest для обработки запросов OPTIONS.Он возвращает OK, но не перешел к моей основной функции Path / Put.

Примечания: Мое приложение в настоящее время находится в среде разработки.Так что мой сервис и клиент находятся на локальном хосте с разными портами.Я сомневаюсь, что речь идет о проблеме развертывания.

Технологии Asp.Net Web Api, Odata для уровня обслуживания и реагирование на уровень представления клиента.

Буду признателен за предложение.

Спасибо.

1 Ответ

0 голосов
/ 23 октября 2018

Я только что решил проблему.

Решение: Установить Auth и app.UseCors (corsOptions); config перед app.useWebApi () codeлиния.Полный конфиг находится ниже.Действительно грустно ...

Startup.cs

public void Configuration(IAppBuilder app)
    {                  
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
        HttpConfiguration configuration = new HttpConfiguration();
        //Config
        Configure(app);
        WebApiConfig.Register(configuration);
        app.UseWebApi(configuration);
    }


private void Configure(IAppBuilder app)
    {
        var corsPolicy = new CorsPolicy
        {
            AllowAnyMethod = true,
            AllowAnyHeader = true,
            SupportsCredentials = true
        };

        // Try and load allowed origins from web.config
        // If none are specified we'll allow all origins
        // TODO get this value from web.config
        var origins = "http://localhost:5911";

        if (origins != null)
        {
            foreach (var origin in origins.Split(';'))
            {
                corsPolicy.Origins.Add(origin);
            }
        }
        else
        {
            corsPolicy.AllowAnyOrigin = true;
        }

        var corsOptions = new CorsOptions
        {
            PolicyProvider = new CorsPolicyProvider
            {
                PolicyResolver = context => Task.FromResult(corsPolicy)
            }
        };
        app.UseCors(corsOptions);
        OAuthAuthorizationServerOptions options = new OAuthAuthorizationServerOptions()
        {
            TokenEndpointPath = new Microsoft.Owin.PathString("/getToken"),
            AccessTokenExpireTimeSpan = TimeSpan.FromHours(1),
            AllowInsecureHttp = true,
            Provider = new AuthorizationServerProvider() // Custom Provider            
        };

        app.UseOAuthAuthorizationServer(options);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...