如何在不使用svcutil.exe工具的情况下创建WCF应用程序?

最佳答案

不使用svcutil.exe来构建WCF客户端的一种方法是使用ChannelFactory。您需要做的是在与服务实现分开的程序集中构建WCF服务接口。然后,您可以从客户端和服务中引用该接口程序集。

获得参考之后,可以使用以下代码创建WCF客户端:

var factory = new ChannelFactory<IMyWcfService>();
var wcfClient = factory.CreateChannel();
bool closedSuccessfully = false;

try
{
    // Now you can make calls on the wcfClient object
    ((ICommunicationObject)wcfClient).Close();
    closedSuccessfully = true;
}
finally
{
    if (!closedSuccessfully)
    {
        ((ICommunicationObject)wcfClient).Abort();
    }
}


注意清理例程。您不能可靠地使用using语句来清理wcfClient变量。如果这样做,并且对象处于故障状态,则在using()块超出范围并且对wcfClient变量执行Dispose()时,将引发异常。见Jesse Ezell's blog

09-28 05:15