2012-02-14 2 views
0

문자열을 반환하는 WCF 서비스가 있습니다. 크로스 도메인 JsonP 요청을 사용하여 호출하려고합니다. IE에서는 작동하지만 다른 브라우저에서는 작동하지 않습니다. Firefox 및 Chrome에서 파서 오류가 발생합니다.크로스 도메인을 통한 WCF 서비스를 통한 HTML 문자열 JSONP AJAX 호출

다양한 기사를 통해 독서에서 나는 아마도 서비스가 결과를 다른 형식으로 되돌려 줄 필요가 있다고 생각하는 것 같습니다. 모든 아이디어가 도움이 될 것입니다, 여기 내 코드입니다.

WCF 서비스 코드

[OperationContract] 
[WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] 
public string SponsorLayout2(string projectScope, int projectYear, int imageHeight) 
{ 
    // Mock data 
    projectScope = "uk"; 
    projectYear = 2012; 
    imageHeight = 42; 

    // Get projectId 
    var project = Projects.GetProjectByProjectScopeAndYear(projectScope, projectYear); 

    // Get project sponsor layouts 
    var projectSponsorLayout = ProjectSponsorLayouts.GetProjectSponsorLayout(project.Id, imageHeight); 

    // Return the sponsors 
    if (projectSponsorLayout != null) 
     return projectSponsorLayout.Body; 

     return null; 

} 

JQuery와 아약스 전화

$.ajax({ 
cache: false, 
type: "GET", 
async: false, 
data: {}, 
url: "http://127.0.0.1:8082/HtmlService.svc/SponsorLayout2", 
contentType: "application/json; charset=utf-8", 
dataType: "jsonp", 
crossDomain: true,   
success: function (data) { 
    alert("success");  
}, 
error: function (xhr) { 
      alert("error"); 
    alert(xhr.statusText); 
}, 
complete: function(jqXHR, textStatus) {  
      alert(textStatus); 
     } 
}); 

답변

1

나는 문제가 위에 언급 점점 된 이유를 발견하고 내가 당신과 함께이를 공유 할 거라 생각 했어요. 은 어떤 이유로 내 web.config 파일에서 내 수업

public class MyClass 

의 꼭대기에 앉아이 속성

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

및이 규칙 사이에 충돌이 있었다

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 

내가 가진 결국 web.config에서 규칙을 주석 처리하고 모든 것이 생기게되었습니다. 내 서비스가 AJAX 지원 서비스이기 때문에 속성이 클래스 바로 위에 추가됩니다. 어쨌든 이것은 나를 위해 일했고 그것이 같은 상황에서 다른 사람들을 돕기를 바랍니다.