2017-04-14 12 views
2

ASP.NET MVC 애플리케이션의 jquery ajax 게시물과 함께 OWIN을 통해 Windows 서비스에서 호스팅되는 웹 API를 호출하고 있습니다 (데이터를 통해 데이터 게시). '옵션). Windows 통합 인증을 추가하기 전까지는 작동했습니다. xhrFields : {withCredentials : true}를 $ .ajax 호출에 추가하여 클라이언트 쪽 인증을 완료했습니다. 이제 반환 된 데이터는 null입니다.

공공 HttpResponseMessage PostSomething ([FromBody] 문자열 DATAIN)

참고로, 문자열이 너무 될 수 있습니다 여기에

public class Startup 
{ 
    public void Configuration(IAppBuilder appBuilder) 
    { 
     var config = new HttpConfiguration(); 

     var listener = 
      (HttpListener)appBuilder.Properties["System.Net.HttpListener"]; 
     listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication; 

     //Maps Http routes based on attributes 
     config.MapHttpAttributeRoutes(); 
     config.Filters.Add(new AuthorizeAttribute()); 

     //Enable WebApi 
     var cors = new EnableCorsAttribute("*", "*", "*"); 
     cors.SupportsCredentials = true; 
     config.EnableCors(cors); 

     appBuilder.UseWebApi(config); 
    } 
} 

웹 API 방법입니다 : 여기

내 서버 측 시작이다 URI에 전달할 큰 수입니다.

function TestAjax() { 
     $.ajax({ 
      url: 'http://localhost:8080/api/Test/PostSomething', 
      xhrFields: { withCredentials: true }, 
      type: 'post', 
      data: 'test' 
     }).done(function (response) { 
      alert(response); 
     }); 
    } 

DATAIN 항상 널 :

다음은 $ 아약스 호출입니다.

답변

0

글쎄, 나는이 대답을 발견했다. 그러나 이것은 왜 작동하는지에 대한 세부적인 사항을 아직도 알지 못한다. 단순히 "data : 'test'"를 "data : { '': 'test'}"로 수정하십시오.

function TestAjax() { 
    $.ajax({ 
     url: 'http://localhost:8080/api/Test/PostSomething', 
     xhrFields: { withCredentials: true }, 
     type: 'post', 
     data: { '': 'test' } 
    }).done(function (response) { 
     alert(response); 
    }); 
} 

누군가가 알고있는 경우 답장을 보내주십시오. 감사!