Вскоре я постараюсь описать свою проблему.
Когда я пробую свои действия api с Postman, Fiddler, все работает нормально. Но когда дело доходит до браузера Ajax Request «OPTIONS», мой API не обрабатывает метод «OPTIONS».
Между прочим, действие «Получить» И «Опубликовать» работает как шарм в браузере.
Мои попытки:
Примечания: Мое приложение в настоящее время находится в среде разработки. Итак, мой сервис и клиент находятся на локальном хосте с разными портами. Я сомневаюсь, что речь идет о проблеме с развертыванием.
Технологии Asp.Net Web Api, Odata для уровня обслуживания и реагировать на уровень представления клиента.
Буду признателен за предложение.
Спасибо.
Я только что решил проблему.
Решение: Конфигурация УстановленныйAuth и app.UseCors (corsOptions); перед строкой кода app.useWebApi (). Полный конфиг находится ниже. Действительно печально...
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());
}