2011-02-10 15 views
2

私は、EXEプロジェクトとクラスライブラリで作られた.NET 4プロジェクトを持っています。クラスライブラリには、WCFを使用するWebサービスへの参照が含まれています。 私のexeと一緒にapp.configファイル(バインディングに関する情報を含む)を配備した場合にのみ、すべてが正常に機能します。 app.configファイルをデプロイする必要なしに、コードで構成されたすべての設定を行うにはどうすればよいですか(私はユーザーにこれらの設定を変更させたくありません)。 ありがとうございます。 アンドレアapp.configを使用せずに.NET 4でwebserviceを設定する方法

答えて

0

あなたはあなたのサービスにプロキシを生成するためのChannelFactoryクラスを使用することができます。 設定ファイルで設定したものはすべて、コードを使って行うこともできます。

正しいバインディングのインスタンスをインスタンス化し、そのプロパティをその反対側のサービス要件に従って構成するだけです。例えば

private IDisposableService GetClient() 
{ 
    var netBinding = new BasicHttpBinding(); 
    netBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; 
    netBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm; 

    var factory = new ChannelFactory<IDisposableService>(netBinding, new EndpointAddress(new Uri(ServerUrl))); 
    factory.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; 
    factory.Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; 

    var channel = factory.CreateChannel(); 

    return channel; 
} 

interface IDisposableService : IYourService, IDisposable 
{ 
} 

その後、あなたは、単に使用することができます。

using (var proxy = GetClient()) 
{ 
    // call proxy here 
} 
0

は、これは私がそれをやった方法です:

MyServiceResponseClient embEvalServiceClient = new MyServiceResponseClient (new BasicHttpBinding(), 
                new EndpointAddress(new Uri(url))); 

if (embEvalServiceClient != null) 
{ 
    embEvalServiceClient.GetPendingEvalsCompleted += getPendingEvalsCompletedHandler; 
    embEvalServiceClient.GetPendingEvalsAsync(attemptId); 
} 
+0

それは動作します。どうもありがとう。 –

+0

この場合、応答を「受け入れられた回答」とマークしてください。ありがとう。 – Cornel

関連する問題