2012-04-23 5 views
0

私はWCFサービスをホストするwin-serviceを持っています。 Win-serviceはコンピュータ "MyComp1"で実行されています。私はのようなエラーが「http://localhost:8732/MyService?xsd=xsd0をインポートできませんでした取得しています(デルファイWSDLImp.exeを使用して、たとえば)、そのサービスからWSDLをインポートしようとしているときにWCF:セットアップ中または実行時にbaseAddressを変更する

 <baseAddresses> 
     <add baseAddress="http://localhost:8732/MyService" /> 
     </baseAddresses> 

:WCFサービスApp.configファイルは次のようになります"これは、サービスがlocalhost上で実行されていないため、正しい動作です。しかし、生成されたWSDL内のXSDの場所には、ローカルホストのようなアドレスが含まれています。

ここで、ユーザーがApp.configを手動で編集しないようにするために、セットアップ中または実行時にbaseAddressを変更したいと考えています。 FlatWSDLについて聞いたことがありますが、これを行うための他のテクニックはありますか?

答えて

3

System.Xml.XmlDocumentを使用して、App.configファイルをプログラムで変更することができます。

XmlDocument xmlDoc = new XmlDocument(); 

xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

xmlDoc.SelectNodes("/configuration/system.serviceModel/services/service/host/baseAddresses/add") 
    .Cast<XmlNode>().ToList() 
    .ForEach(o => o.Attributes["baseAddress"].Value = "http://localhost:8732/MyService"); 

xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

ちょうどあなたのベースアドレスの正しいXPath式を使用してください。お役に立てれば。

+0

wcfサービスではどこにこのコードがありますか? – ZoomVirus

関連する問題