4

クライアント側の JavaScript から呼び出される WCF サービスがあります。Service is null JavaScript エラーで呼び出しが失敗します。WebDevelopment ヘルパー トレースは、jsdebug サポート ファイルをロードする呼び出しが 404 (ファイルが見つかりません) エラーになることを示しています。

IIS を再起動するか、Temp ASP.Net ファイルをクリアするか、web.config のコンパイル タグで batch="false" を設定しても、問題は解決しません。

ブラウザから

https://Myserver/MyApp/Services/MyService.svcはサービスのメタデータを表示します

でも

https://Myserver/MyApp/Services/MyService.svc/jsdebugは 404 になります。

問題は https プロトコルにあるようです。http /jsdebug を使用すると、サポートする JS ファイルがダウンロードされます。

何か案は?

ティア

4

3 に答える 3

12

理解した!

これは、web.config のサービス構成セクションです。

エンドポイントの bindingConfiguration 属性を見てください。値 "webBinding" は、バインディング内のバインディング名="webBinding" タグを指しており、これが HTTPS でトランスポート レベル セキュリティを使用するようにサービスに指示するものです。私の場合、属性値が空だったため、HTTPS を介した /js または /jsdebug ファイルへの Web サービス要求が失敗し、404 エラーがスローされました。

<services>
      <service name="MyService">
        <endpoint address="" behaviorConfiguration="MyServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Services.MyService" />
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding">
          <security mode="Transport">
          </security>
        </binding>
      </webHttpBinding>
    </bindings>

https ではなく http を介してサービスにアクセスする場合 (証明書のないローカル マシンでテストする場合)、bindingConfiguration 属性は空 ("") にする必要があることに注意してください。

これが誰かに役立つことを願っています。

于 2008-09-12T19:01:57.953 に答える
0

私にとって問題は次のとおりでした。ルーティングを使用して MVC をソリューションに追加しました。私たちの WCF サービスは無視されていませんでした。次のルールを追加することでこれを解決しました (「WCF」は、サービスを保持するフォルダーです)。

routes.IgnoreRoute("WCF/{*pathInfo}");

誰かが数時間を節約できることを願っています。

于 2015-06-05T11:57:17.517 に答える