質問

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

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

ブラウザから

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

しかし

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

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

何か案は?

TIA

役に立ちましたか?

解決

理解した!

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

エンドポイントの bindingConfiguration 属性を確認します。値「webBinding」はバインディング内のバインディング name="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 属性は空 ("") である必要があることに注意してください。

これが誰かの役に立てば幸いです。

他のヒント

考えられるすべての作業を行った後でも同じエラーが発生する場合。「AJAX 対応 WCF サービス」を追加するだけです。

私にとって問題は次のようなものでした。ルーティングを備えたソリューションに MVC を追加しました。私たちの WCF サービスは無視されませんでした。次のルールを追加することでこれを解決しました (「WCF」はサービスを保存するフォルダーです)。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top