cam*_*elt 15 wcf web-services endpoints
我试图从.NET客户端应用程序中使用WCF Web服务,我认为我需要能够以编程方式创建端点,但我不知道如何.我想我需要这样做,因为当我尝试运行应用程序时,我收到以下错误:
无法在ServiceModel客户端配置部分中找到引用合同"IEmailService"的默认端点元素.这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素.
在解决此错误时,我创建了一个简单的Windows窗体应用程序,我尝试使用相同的Web服务.使用此测试应用程序,我可以成功连接到Web服务,并获得有效的响应.但是,我可以在我的测试应用程序中通过从应用程序的app.config文件中删除system.serviceModel节点及其所有子节点来重现上面引用的确切错误(我可能不必删除所有该部分,我是不确定).所以,我的第一个想法是我需要将该部分添加到真实应用程序的app.config文件中,一切都应该没问题.不幸的是,由于荒谬的原因,我不会进入这里,这不是一个选择.所以,我不得不在客户端应用程序内的代码中生成此信息.
我希望有人可以帮助我解决这个问题,或者可以指出我为这类问题寻找一个好的资源.
是否可以在代码中在客户端应用程序中创建端点配置?
mar*_*c_s 40
默认情况下,当您执行Add Service Reference操作时,WCF运行时将为您生成客户端代理.
使用它的最简单方法是使用不带参数的构造函数实例化客户端代理,只需从以下内容中获取信息app.config:
YourServiceClient proxy = new YourServiceClient();
Run Code Online (Sandbox Code Playgroud)
这需要配置文件<client>包含您的服务合同条目 - 如果没有,您将收到您的错误.
但是,由WCF运行时生成的客户端代理类还具有其他构造函数 - 例如,一个获取端点地址和绑定:
BasicHttpBinding binding = new BasicHttpBinding(SecurityMode.None);
EndpointAddress epa = new EndpointAddress("http://localhost:8282/basic");
YourServiceClient proxy = new YourServiceClient(binding, epa);
Run Code Online (Sandbox Code Playgroud)
使用此设置,根本不需要配置文件 - 您在代码中定义了所有内容.当然,您也可以在代码中设置绑定和/或端点的任何其他属性.
如果您具有对定义接口的程序集的引用,那么使用WCF服务的东方方法是使用System.ServiceModel.ChannelFactory类.
例如,如果您想使用BasicHttpBinding:
var emailService = ChannelFactory<IEmailService>.CreateChannel(new BasicHttpBinding(), new EndpointAddress(new Uri("http://some-uri-here.com/));
Run Code Online (Sandbox Code Playgroud)
如果您没有对服务程序集的引用,则可以使用生成的代理类上的其中一个重载构造函数来指定绑定设置.
| 归档时间: |
|
| 查看次数: |
26309 次 |
| 最近记录: |