2011-02-10 65 views
2

我有一個由EXE項目和類庫組成的.NET 4項目。類庫包含對web服務的引用(使用WCF)。 只有在我的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

它的工作原理。非常感謝。 – 2011-02-13 23:12:04

相關問題