0

「BasicHttpbinding」バインディングを備えた WCF サービスがあります。Internet Explorer で JQuery を使用してサービスを適切に呼び出すことができます。しかし、同じコードは Chrome や FireFox では機能しません。Chrome または FireFox からの JQuery Ajax 呼び出しにクロスドメインの問題があることは理解できます。crossDomainScriptAccessEnabled="true" を使用して「webHttpBinding」バインディングを公開し、サービスを呼び出すことができることはわかっています。しかし、既存の「BasicHttp」バインディングを使用する必要があるというスキャンナリオがある場合、解決策は何ですか? 次の JQuery コードを使用して WCF サービスを呼び出しました。

      $.ajax({
                  type: "POST",
                  url: "http://localhost:1415/MyService.svc/bh/",
                  data: bhRequest,
                  timeout: 10000,
                  contentType: "text/xml",
                  dataType: "xml",
                  beforeSend: function (xhr) {
                      xhr.setRequestHeader("SOAPAction", "http://tempuri.org/IMyService/GetData");
                  },
                  success: function (data) {
                      $(data).find("GetDataResponse").each(function () {
                          alert($(this).find("GetDataResult").text());
                      });
                  },
                  error: function (xhr, status, error) {
                      alert(error);

                  }
              });

私のWCFサービスメソッドは次のとおりです。

 [OperationContract]
 string GetData(int value);

誰でもこれに関する解決策を提供できますか?

4

1 に答える 1

0

global.asax を WCF に追加し、その後これを追加します。

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*");
}
于 2013-01-28T17:44:26.273 に答える