2012-02-14 6 views
0

文字列を返すWCFサービスがあります。私はそれをクロスドメインJsonPリクエストを使って呼び出そうとしています。これはIEでは動作しますが、他のブラウザでは動作しません。 FirefoxとChromeでパーサーエラーが戻ってきます。クロスドメインJSONP AJAXコールによるWCFサービスによるHTML文字列の取得

さまざまな記事を読んでから、サービスが結果を別の形式に戻す必要があるかもしれないと思うようです。任意のアイデアが参考になるでしょう、ここで私のコードです。

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コール

$.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対応サービスなので、クラスの上に属性が追加されています。とにかくこれは私のために働いて、同じ状況で他の誰にも役立つことを願っています。

関連する問題