0

Visual Studio 2010 / .NET 4.0 の使用

私は何時間もこれに取り組んできましたが、具体的にしようと思います。

WCF 4.0 サービスを IIS 7 に展開しています。http で正常に動作します。Visual Studio から WCF サービスに対するサービス参照を追加し、それに対するコードを問題なく追加できます。

もちろん問題は、サービスを https で実行する必要があることです。

web.config ファイルを手動で処理して、https で実行できるようにしました (少なくとも、ブラウザーで .svc と ?wsdl の表示を確認できます)。

しかしもちろん、IIS は wsdl 全体でドメイン名ではなくマシン名を返します。

したがって、サービス参照を追加しようとすると、このようなものが得られます。

ドキュメントは理解されましたが、処理できませんでした。- WSDL ドキュメントに、解決できなかったリンクが含まれています。- 「https://machinename/MyServiceName.svc?xsd=xsd0」のダウンロード中にエラーが発生しました。- リモート名を解決できませんでした: 'machinename'

問題は、IIS がホスト ヘッダーを返さないため、WCF がマシン名を推測して返していることです。

もちろん、IIS7 では、SSL を使用しているサイトにホスト ヘッダーを追加することはできません。私はグーグルで検索し、他の人がこのようなappcmdを使用してホストヘッダーを設定しているのを見ました

appcmd set site /site.name: /+bindings.[protocol='https',bindingInformation='*:443:']

試してみたところ、サイトが変更されていることがわかりました

しかし、既存の SSL バインディングを変更する代わりに、ホスト名はあるが証明書が添付されていない追加のバインディングを取得します。IIS UI から SSL を選択しようとすると、ホスト名が消去されます。GoDaddy のワイルドカード証明書を使用しています

1) appcmd でこの問題が発生した人はいますか? 解決方法について何かアイデアがあれば。2) webconfig でドメイン名を設定できますか? これまでにそうしようとしたすべての試みは、さまざまな IIS の死のイエロー スクリーンを生成し、1 つまたは別のパラメーターについて不平を言いました。私はあなたの娯楽と提案のためにコピーを含めます.

<services>
  <service name ="NameThisService" behaviorConfiguration="TheDefaultBehaviour">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="webBinding" contract="IService" >
    </endpoint>


  </service>
</services>

<bindings>
  <wsHttpBinding>
    <binding name="webBinding">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings >


<behaviors>
  <serviceBehaviors>
    <behavior name="TheDefaultBehaviour">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpsGetEnabled="true" />
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>

    </behavior>
  </serviceBehaviors>
</behaviors>




<serviceHostingEnvironment multipleSiteBindingsEnabled="false"/>

4

1 に答える 1

0

コマンド ラインが機能しない場合は、UI で実行できます。証明書のフレンドリ名をいじる必要があります。以下のリンク。

http://blog.armgasys.com/?p=80

于 2011-07-13T16:22:14.997 に答える