Ошибка связи между сервером asp.net webapi и приложением angular2 - PullRequest
0 голосов
/ 12 ноября 2018

Я сталкиваюсь с проблемой, связанной с CORS, когда пытаюсь подключить свое приложение angular2 и приложение asp.net webapi.

Ошибка: - register: 1 Доступ к XMLHttpRequest в «http://localhost:49457/api/UserDetails' от источника» http://localhost:4200' заблокирован политикой CORS: заголовок «Access-Control-Allow-Origin» содержит несколько значений «http://localhost:4200, http://localhost:4200', но разрешен только один.

Вот мой код для подключения для вызова URL-адреса asp.net webapi через мое приложение angular2: -

User.service.ts

GetUser(userobj:user):Observable<User>  
{

return this.http.get<User>(`http://localhost:49457/api/UserDetails`,{responseType:"text"})  
.subscribe(
          function(response)
          {                    
        console.log("user details retreived successfully");
          },                
      function(error)
          { 
               console.log(error);
          });
}

Это мой код для asp.net webapi,

 public class UserDetailsController : ApiController
    {
        private sampledbEntities dbentity = new sampledbEntities(); 
        // GET api/<controller>
        public IQueryable<Userdetail> GetUserdetails()
        {
            return dbentity.userdetails; 
        }
}

На самом деле, когда я запускаю свой сервер asp.netwebapi, он корректно получает данные через браузер. А также я включил CORS в webapiconfig.cs,

void Register(HttpConfiguration config)
{
 var corsAttr = new EnableCorsAttribute("http://localhost:4200", "*", "*");
            config.EnableCors(corsAttr);
}

в web.config.cs,

 <httpProtocol>  
    <customHeaders>  
     <add name="Access-Control-Allow-Origin" value="http://localhost:4200" />  
     <add name="Access-Control-Allow-Headers" value="Origin, Content-Type, X-Auth-Token" />  
     <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />  
    </customHeaders>  
  </httpProtocol>  

После включения CORS в Webapiconfig.cs и web.config я также сталкиваюсь с той же ошибкой.

Пожалуйста, уточните, как я могу выйти из этой ошибки,

1 Ответ

0 голосов
/ 12 ноября 2018

Замените http://localhost:4200 на "*" из метода EnableCorsAttribute.

void Register(HttpConfiguration config)
{
    var corsAttr = new EnableCorsAttribute("http://localhost:4200", "*", "*");
    config.EnableCors(corsAttr);
}

и удалите параметры конфигурации httpProtocol из web.config.

...