WCF サービス サポート ファイル jsdebug のロードに失敗する
-
09-06-2019 - |
質問
クライアント側の 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}");
これで誰かが数時間節約できることを願っています。