2009-08-03 18 views
1

VSTS2008 + C#+ .Net 3.5を使用してIISでホストされるWCFサービスを開発しています。 Add Service Reference ...を使用してクライアントからサービスを参照すると、クライアントはマシン名をIPアドレスに解決できなければなりません.WSDLはマシン名でいくつかのスキーマファイルを参照するためです。ここでWCFサービスをIPアドレスにバインドする方法

<xsd:import schemaLocation="http://testmachine1/service.svc?xsd=xsd1" 
    namespace="http://schemas.microsoft.com/2003/10/Serialization/"/> 

、プロキシを生成するために、クライアント側からWSDLファイルを解析するために、我々は、関連IPアドレスにマシン名testmachine1を解決できるようにする必要があり、WSDLファイルの一部の例である私の質問は、何らかの理由でマシン名を(技術的な理由以外で)常時解決できないため、ホスティングIISサーバーのIPアドレスにバインドします。出来ますか?はいの場合は、誰かに助言できるかどうか感謝します。ここに私の現在のWCFのweb.configファイルには、ある私は、あなたのWCFサービスをホストされている場合は、IPアドレスで動作することを可能にするために、それを変更する方法を事前に

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service behaviorConfiguration="Foo.WCF.ServiceBehavior" 
     name="Foo.WCF.CustomerManagement"> 
     <endpoint address="" binding="basicHttpBinding" 
        contract="Foo.WCF.ICustomerManagement"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" 
        contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Foo.WCF.ServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

おかげで、 ジョージ

答えて

2

を知りたいですIISでは、別のアドレスを設定することはできません。 は、マシン名(http://yourserver/virtualdir/myservice.svc)またはIP(http://123.123.123.123/virtualdir/myservice.svc)のいずれかで、SVCファイルが存在する仮想ディレクトリのURLを使用する必要があります。

IPを使用してサービス参照を追加すると、そのIPはサービスインポートによって生成されたWSDLで使用されます。

自分でWCFサービス(Windowsサービス、コンソールアプリケーション)をホストする場合は、サービスアドレスをconfigで設定し、マシン名またはIPをマシンに使用できます。

マルク・

+0

こんにちはマーク、申し訳ありません。私はIPアドレス、http://123.123.123.123/service.svc?wsdlを使用してIEからWSDLにアクセスしようとしましたが、他のインポートxsdファイルを参照するためにマシン名を使用します。私の問題を再現しようとすることができます。これは私が頭痛で、マシン名をIPアドレスに解決できないため、xsdファイルをインポートできません。コメントや解決方法は? – George2

+1

OK、興味深い - 私はこれを自分で行う必要はなかったが、私は驚いている。まず、メタデータを自分でダウンロードし、大きな静的WSDLにアセンブルし、WSDLを自動的に作成するのではなく、WebサービスのコンシューマーにWSDLを提示することです。 –

+0

ありがとうMarc、私はそれが動作することを知っています。私の質問は、web.configから、マシン名以外のIPアドレスにバインドするオプションがあるかどうかです。 web.configにはマシン名やIPアドレスが割り当てられていないので、デフォルトでは動作しています。この行動を上書きできるかどうかはわかりません。コメントはありますか? – George2

1

私はこれと同じ問題を抱えて、私自身の問題に対する答えを探しながら、あなたのポストを見ました。

私は、IISのサイトバインディングをipのものに変更するという解決策を見つけた可能性があります。これが.configファイルの設定にならない理由はまだ分かりません。

ここに私が見つけた解決策(http://blogs.msdn.com/wenlong/archive/2007/08/02/how-to-change-hostname-in-wsdl-of-an-iis-hosted-service.aspx)へのリンクがあります。

ここに私の問題(.NET WCF service references use server name rather than IP address causing issues when consuming)に関する投稿へのリンクがあります。

ここに解決策を見つけることについての私のポストへのリンクです(WCF (hosting service in IIS) - machine name automattically being picked up by WCF rather than IP?)。

関連する問題