2012-10-21 4 views
0

웹 양식 웹 사이트에서 첫 번째 Asp.net 웹 API를 빌드하려면 this tutorial을 따르고 있지만 문제가 있습니다. 웹 서비스를 소비 할 수있는 웹 서비스 ASP.NET 웹 API가 원격 서비스에서 json 데이터를 가져 오지 않습니다.

  • 클라이언트 프로젝트의 정의에 대한

    1. 호스트 프로젝트 : 나는 두 개의 프로젝트를 만들었습니다.

    이제 내 문제는 내가 웹 브라우저의 예를 사용하여 내 웹 API를 URL)로 이동하는 경우 http://localhost:39930/api/products/는 다음이 완벽하게 작동하고 XML 또는 JSON 데이터는 브라우저에 따라 돌려 주어집니다.

    그러나 내 고객 웹 사이트에있는 웹 서비스 URL을 사용하면 아무 것도 반환되지 않습니다. 여기

    는 내 클라이언트 웹 사이트에서 웹 서비스를 호출하는 방법입니다

    <table> 
        <thead> 
         <tr> 
          <th>Name</th> 
          <th>Price</th> 
         </tr> 
        </thead> 
        <tbody id="products"> 
        </tbody> 
    </table> 
    
    <script type="text/javascript"> 
        function getProducts() { 
         $.getJSON("http://localhost:39930/api/products", 
          function (data) { 
           $('#products').empty(); // Clear the table body. 
    
           // Loop through the list of products. 
           $.each(data, function (key, val) { 
            // Add a table row for the product. 
            var row = '<td>' + val.Name + '</td><td>' + val.Price + '</td>'; 
            $('<tr/>', { text: row }) // Append the name. 
             .appendTo($('#products')); 
           }); 
          }); 
        } 
    
        $(document).ready(getProducts); 
    </script> 
    

    을 그리고 여기에 불을 지르고에서 요청의 스냅 샷입니다 : 응답이 비어 있음을

    enter image description here

    공지 사항 .

    여기 뭔가 잘못 되었나요? 서비스를 원격으로 호출 할 수 있도록 추가해야하는 구성이 있습니까? 사전에

    감사합니다.

  • 답변

    1

    호스트 프로젝트 및 클라이언트 프로젝트가 동일한 출처 정책 및 금지 된 다른 포트에서 실행되고 있기 때문입니다. 자세한 내용은 여기를 참조하십시오 http://en.wikipedia.org/wiki/Same_origin_policy

    이 기능을 사용하려면 json 대신 jsonp를 사용할 수 있습니다. 이 기사를 보시길 http://www.jquery4u.com/json/jsonp-examples/#.UISVAo3iYsc

    +0

    ... 그리고이 문제를 해결할 정말 좋은 기사가 있습니다 : http://www.west-wind.com/weblog/posts/2012/Apr/02/Creating- a-JSONP-Formatter-for-ASPNET-Web-API – Eyad

    관련 문제