WCF配置没有配置文件怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

有谁知道如何在不使用配置文件的情况下以编程方式公开WCF服务的一个很好的例子吗?我知道现在使用WCF的服务对象模型更加丰富,所以我知道这是可能的。我只是没有看到如何这样做的例子。相反,我想看看没有配置文件的情况下如何消费。

在任何人问起之前,我有一个非常特殊的需要,即不使用配置文件。我通常不会推荐这种做法,但正如我所说的,在这种情况下有一个非常特殊的需求。

提问于
用户回答回答于

正如我所发现的,使用没有配置文件的Web服务非常简单。只需创建绑定对象和地址对象,并将它们传递给客户端代理的构造函数或通用ChannelFactory实例。可以查看默认的app.config来查看要使用的设置,然后在实例化您的代理的地方创建一个静态帮助器方法:

internal static MyServiceSoapClient CreateWebServiceInstance() {
    BasicHttpBinding binding = new BasicHttpBinding();
    // I think most (or all) of these are defaults--I just copied them from app.config:
    binding.SendTimeout = TimeSpan.FromMinutes( 1 );
    binding.OpenTimeout = TimeSpan.FromMinutes( 1 );
    binding.CloseTimeout = TimeSpan.FromMinutes( 1 );
    binding.ReceiveTimeout = TimeSpan.FromMinutes( 10 );
    binding.AllowCookies = false;
    binding.BypassProxyOnLocal = false;
    binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
    binding.MessageEncoding = WSMessageEncoding.Text;
    binding.TextEncoding = System.Text.Encoding.UTF8;
    binding.TransferMode = TransferMode.Buffered;
    binding.UseDefaultWebProxy = true;
    return new MyServiceSoapClient( binding, new EndpointAddress( "http://www.mysite.com/MyService.asmx" ) );
}
用户回答回答于

如果有兴趣消除IIS主机的web.config中System.ServiceModel部分的用法,我已经发布了一个如何在此处执行此操作的示例(http://bejabbers2.blogspot.com/2010/02/wcf -zero-config-in-net-35-part-ii.html)。我展示了如何定制一个ServiceHost来创建元数据和wshttpbinding端点。我以一种通用的方式来做,不需要额外的编码。对于那些不立即升级到.NET 4.0的人来说,这可能非常方便。

扫码关注云+社区