2017-02-08 11 views
0

이상한 문제가 있습니다. 동일한 도메인의 WebAPI에 대해 clientSide App (jquery)을 실행하고 있습니다. 내 로컬 컴퓨터의 IIS에서 루트 웹 사이트 (사이트 -> MyApp)로 호스트하면 OK (게시 및 게시)가 작동합니다. 일반적인 API 호출은 다음과 같습니다 : 나는 하위 응용 프로그램으로, IIS에서 "기본 웹 사이트"의 아래를 개최 할 때,Ajax 웹에 게시 API가 성공하지만 기본 웹 사이트 (IIS)에서 호스팅 할 때 클라이언트 측에서 실패 함

$.get("api/GetList", null, function (data) { 
     var list = data; 
    }) 

을하지만, 일반적인 API 호출은 다음과 같습니다

$.get("MyApp/api/GetList", null, function (data) { 
     var list = data; 
    }) 

모든 GET 호출은 정상적으로 작동하지만 POST 호출은 이상하게 작동합니다. 나는 POST 호출과 같이합니다

$.ajax({ 
      url: "MyApp/api/Fields", 
      type: 'POST', 
      dataType: 'json', 
      contentType: false, 
      cache: false, 
      processData: false, 
      data: data, 
      success: function (res) { 
       var x = res;    
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       // 
      } 
     }); 

웹 API를 방법은 다음과 같습니다

[HttpPost] 
[Route("api/Fields")] 
public async Task<IHttpActionResult> Post() {... 

나는 POST 호출을 실행하면,이 서버에 도달하고 서버 방법은 잘 작동하지만, 반환하면 오류가 발생합니다. 여기에서 : http://localhost/MyApp/index.html 내가 버튼을 제출하고이 가져 오기를 클릭 (작업이 서버 측에서 성공에도 불구하고!) : HTTP 오류 404.0을 - 당신이의 MyApp에 대한 경로를 볼 수 http://localhost:80/api/Fields?input_1=sometext

그래서 요청 된 URL 찾을 수 없음 사라졌으며 IIS는 요청을 GET 한 것처럼 처리합니다.

같은 구성으로 IIS의 테스트 서버에서 실행될 때 동일한 코드가 1 : 1이면이 오류없이 정상적으로 작동합니다. 아이디어가 있으십니까?

+0

어쩌면 다시 말하면 짧을 것입니다. http : // localhost/MyApp/api/fields에 AJAX Post를 사용합니다 (VS2015의 F5를 사용하여 올바른 방법에 도달했음을 알 수 있습니다). 그러나 응답이 있습니다. HTTP 오류 404.0 - 찾을 수없는 요청 된 URL http : // localhost : 80/api/Fields? input_1 = 123 및 : 요청한 리소스가 http 메서드 'get'을 지원하지 않습니다. 1. POST였습니다. 2. http : // localhost/MyApp/api/fields가 아닌 http : // localhost : 80/api/Fields를 호출했습니다. – amira

답변

0

는 웹에서 응답 없음 수많은 조사 후, 나는 갑자기 내가 작업 속성을 제거로 양식 태그는 즉시 작업 속성! :

<form id="Id" name="Name" action="api/action" enctype="multipart/form-data" novalidate> 

포함 된 것을보고, 그것은 여분의 API 호출을 해결했다. 하지만 폼의 기본 동작을 방지해야했습니다. 그래서 Ajax Post API 호출을 $ (document) .ready 함수 안에 넣습니다.

jQuery(function ($) { 
     var frm = $('#FormId'); 
     frm.submit(function (ev) { 
      ev.preventDefault(); 

      //do validation etc.. 

      //do Ajax Post 
      $.ajax({ 
       url: "api/Fields/", 
       method: 'POST', 
       dataType: 'json', 
       contentType: false,... 
      }); 
      return false; 
     }); 
    }); 

폼 기본 동작을 잊지 마세요!