SSL 経由で WebGets/WebInvokes のみを実行する WCF サービス ページがあります。これはローカル マシン (自己署名証明書) では正常に動作します。ただし、運用環境では、service.svc にアクセスできます (使用方法に関するメッセージが表示されます) が、service.svc/AnyRequest は 404 を返します。両方の環境は IIS 7.5 でホストされています。
トレースを有効にしましたが、サービスはメソッド リクエスト (例: service.svc/SomeRequest) をまったく取得していませんが、処理は正常に行わservice.svc
れています。また、 をリッスンしていますがhttps://computername.domain.net/path/service.svc
、これは正常ですか? 通常は を指す必要がありますかhttps://publicfacing.com/path/service.svc
?
また、運用サーバーでは IIS 内で複数のサイトをホストしていることにも注意してください。
以下は私のweb.configのsystem.serviceModelセクションです。SSLBehaveは以下から提案されました。ここ。
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="SSLBehave">
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="https" port="443"/>
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="UserManagement.ajaxAspNetAjaxBehavior">
<webHttp defaultOutgoingResponseFormat="Json" defaultBodyStyle="Wrapped" />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="UserManagement.ajax" behaviorConfiguration="SSLBehave">
<endpoint address="" behaviorConfiguration="UserManagement.ajaxAspNetAjaxBehavior"
binding="webHttpBinding" bindingConfiguration="TransportSecurity" contract="UserManagement.ajax" />
</service>
</services>
</system.serviceModel>
ベストアンサー1
新しく開発した WCF Web サービスで 404 エラーが発生したときに最初に行うことは、このタイプの呼び出しを解釈するために必要なハンドラー マッピングを確認することです。これが問題の原因であることが多いためです。この問題を回避する方法はいくつかありますが、その多くはコンソールServiceModelReg.exe
コマンドを手動で実行する必要があります。これらは間違いなく有効な手順ですが、開発マシンの構成が特に複雑な場合は機能しないか、追加の問題が発生する可能性があります。以下で提案する解決方法は、実行に少し時間がかかりますが、より安全かつ確実に問題を解決できるという利点があります。
- 開くサーバーマネージャーマシン管理用のインターフェースで、通常はタスクバーそしてそのスタートメニュー。
- に行くダッシュボード(またはコントロールパネル)選択して役割または機能を追加するウィザードを開きます。
- を選択役割ベースまたは機能ベースのインストールタイプ作業するサーバー、つまりローカル/ローカル サーバー。
- に行く特徴セクション: そこに到達したら、.NET Framework 3.5 の機能ノードおよび/または.NET Framework 4.5 の機能インストールしたものに応じて、ノードごとに実行する必要があります。両方ある場合は、次の手順を 2 回実行する必要があります (それぞれに対して)。
- WCFサービスセクションを展開し(利用可能な場合)、HTTP アクティベーション(下のスクリーンショットを参照)。
- ウィザードを完了するまで続行し、インストール。
インストールが完了すると、404 エラーが発生することなく WCF サービスを実行できるようになります。
この特定の問題とその解決方法に関する追加情報については、この投稿を読む私のブログで。