Я использую HTTP-вызов для веб-API С#, что приводит к ошибке «No Access-Control-Allow-Origin».
Этот метод вызывается средой выполнения. Используйте этот метод для добавления служб в контейнер.
ВЕБ-API — StartUp.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",builder =>
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials() );
});
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new ReadOnlyJsonContractResolver();
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, WhiteBoxDBContext context)
{
app.UseCors("CorsPolicy");
app.UseMvc();
}
//Контроллер
[HttpPost]
[Route("ValidateUser")]
[EnableCors("CorsPolicy")]
public ValidateUser<string> Get()
{
return new string[] { "value1", "value2" };
}
Ошибка:-
Не уверен, что я пропустил, но это должно работать....
@Paul - сейчас попробую...
Как вы обрабатываете исключения? Есть ли у вас фильтр обработки исключений или промежуточное ПО?





services.AddCors();
services.AddCors(o => o.AddPolicy("AllowOrigin", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
// Настроить
public void Configure(IApplicationBuilder app, IHostingEnvironment env, WhiteBoxDBContext context)
{
app.UseCors("AllowOrigin");
app.UseMvc();
}
//Контроллер
[HttpPost]
[Route("ValidateUser")]
public ValidateUser<string> Get()
{
return new string[] { "value1", "value2" };
}
убедитесь, что ваше расширение Chrome CORS должно быть отключено
1) Установите пакет Microsoft.AspNet.WebApi.Cors
Install-Package Microsoft.AspNet.WebApi.Cors
2) Откройте файл webapiconfig. cs и добавьте следующую строку в метод Register() (непосредственно перед добавлением маршрутов):
config.EnableCors();
3) украсьте свой контроллер/методы действий (где это применимо) строкой ниже:
[EnableCors(origins: "http://www.myclientsite.com", headers: "*", methods: "*")]
public class TestController : ApiController{ ....... }
см. ссылку docs.microsoft.com/en-us/aspnet/web-api/overview/security/… для более подробной информации
Вы пытались включить cors на всех контроллерах, а не на этом конкретном действии? О, и это может быть не точная ошибка, я думаю, в некоторых случаях у вас есть эта ошибка, но это не ошибка cors, это ошибка сервера, которая не улавливается или что-то еще. Попробуйте отладить свой код API, я думаю, или возврат, который у вас есть. Проверьте инструмент Network Dev, чтобы увидеть, есть ли у вас ошибка в запросе.