0

jsonpエンドポイントでriaサービスを使用しています。サービスファイルでメソッドを呼び出すと、ieとfirefoxで正常に機能しますが、Chromeで機能する場合や、「認証されたサービスではクロスドメインJavaScriptコールバックがサポートされていません」というメッセージが表示される場合があります。エラー。私も認証されたサービスを利用していません。

これが私が持っているものについてのコードです。

Jsonpサービス

    [EnableClientAccess(RequiresSecureEndpoint = false)]
    public class PPolJsonService : LinqToEntitiesDomainService<PPolAdvEntities>
    {

       public IQueryable<QuestionEntity> GetCompleteSurvey()
       {
        ............
       }
    }

javascriptコード

 function (data) {
                        var Params = {};
                        Params.type = 'GET';
                        Params.url = 'http://127.0.0.1:81/PPolSilverlight-Web-Services-PPolJsonService.svc/JSONP/GetCompleteSurvey;
                        Params.dataType = 'jsonp';

                        Params.data = { data:'somedata'};
                        Params.success = function (data) { };
                        Params.jsonpCallback = "ppolv2"
                        $.ajax(Params);
                    });

web.configファイルでの私の設定は<authentication mode="Forms">

私が設定<authentication mode="None">した場合、私はクロムに関するすべての問題を解決することができます。ただし、アプリケーションの残りの部分には認証が必要です。そのため、「mode=Forms」として使用する必要があります。ご覧のとおり、私のサービスは認証を使用していません。

なぜこのエラーが発生するのですか?それに対する解決策はありますか?

ノート:

ちなみに私はweb.configに次のような他の設定があります

  <webHttpEndpoint>
        <standardEndpoint crossDomainScriptAccessEnabled="true"
                          automaticFormatSelectionEnabled="true"/>
      </webHttpEndpoint>

またはclientaccesspolicy.xmlのこれら

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="http://*"/>
        <domain uri="https://*" />
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

しかし、それらのどれも私を助けていません。

前もって感謝します。

4

2 に答える 2

1

こんにちは、この行を web.config ファイルに追加してみてください。クロスドメイン Ajax リクエストを有効にします。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>
于 2012-06-13T11:25:48.463 に答える
0

私はそれを十分にテストしていませんが、私は解決策を見つけたと思います。

アプリケーションでセキュアエンドポイントを使用し、jsonpサービスにセキュアエンドポイントを使用する必要がない場合は、

requireSSL="true"を追加できます

 <authentication mode="Forms">
  <forms name=".PPolSilverlight_ASPXAUTH" timeout="2880" requireSSL="true" />
</authentication>

この小さなコードを使用すると、安全でないjsonpサービスが認証なしで機能できるようになります。

于 2012-06-13T14:46:51.457 に答える