Tag: wcf client的

如何确保你不会得到WCF Faulted状态exception?

我得到这个例外: 通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。 WCF服务使用默认的wsHttpBinding。 无论我在哪里使用WCF,我都以如下方式使用WCF: using (var proxy = new CAGDashboardServiceClient()) { proxy.Open(); var result = proxy.GetSiteForRegion(ddlRegions.SelectedValue); ddlSites.DataSource = result; ddlSites.DataBind(); proxy.Close(); } 消息中显示的错误行似乎是在最后一个proxy.close之后。 不知道发生了什么事。 我从Visual Studio 08内启动服务。 这里是跟踪信息: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state. Server stack trace: at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout) Exception rethrown at [0]: at […]

是否可以在不使用SDK的情况下调用Dynamics CRM 2011的后期绑定WCF组织服务 – 直接定制绑定?

我试图实现一个纯粹的WCF场景,我想调用Dynamics CRM WCF服务,而不依赖于SDK辅助类。 基本上,我想通过.net框架仅使用本机WCF支持,针对Dynamics CRM 2011实施联合身份validation。 我这样做的原因是我想稍后移植到BizTalk。 我已经使用SvcUtil成功生成了代理类,但策略和安全声明的一部分与configuration模式不兼容。 SvcUtilbuild议用代码来build立绑定,这就是我正在做的。 结果代码在这里: private static void CallWcf() { OrganizationServiceClient client = null; try { // Login Live.com Issuer Binding var wsHttpBinding = new WSHttpBinding(); wsHttpBinding.Security = new WSHttpSecurity(); wsHttpBinding.Security.Mode = SecurityMode.Transport; // Endpoint Binding Elements var securityElement = new TransportSecurityBindingElement(); securityElement.DefaultAlgorithmSuite = SecurityAlgorithmSuite.TripleDes; securityElement.IncludeTimestamp = true; securityElement.KeyEntropyMode = […]

WCF在运行时更改端点地址

我有我的第一个WCF例子工作。 我有一个网站上的主机有很多绑定。 因此,我已经添加到我的web.config。 <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 这是我的默认绑定http://id.web ,它与以下代码一起使用。 EchoServiceClient client = new EchoServiceClient(); litResponse.Text = client.SendEcho("Hello World"); client.Close(); 我正在尝试在运行时设置端点地址。 即使它是上述代码的相同地址。 EchoServiceClient client = new EchoServiceClient(); client.Endpoint.Address = new EndpointAddress("http://id.web/Services/EchoService.svc"); litResponse.Text = client.SendEcho("Hello World"); client.Close(); 我得到的错误是: The request for security token could not be satisfied because authentication failed. 请build议我如何在运行时更改端点地址? 另外这里是我的客户端configuration,由Ladislav Mrnka请求 <system.serviceModel> <bindings> <wsHttpBinding> <binding name="WSHttpBinding_IEchoService" closeTimeout="00:01:00" […]

如何以编程方式将客户端连接到WCF服务?

我试图将应用程序(客户端)连接到公开的WCF服务,但不是通过应用程序configuration文件,而是在代码中。 我应该怎么做呢?

什么是WCF客户端`使用`块问题的最佳解决方法?

我喜欢在using块中实例化我的WCF服务客户端,因为它几乎是使用实现IDisposable资源的标准方式: using (var client = new SomeWCFServiceClient()) { //Do something with the client } 但是,正如在这篇MSDN文章中指出的那样,将WCF客户端封装在using块中可能会掩盖导致客户端处于故障状态(如超时或通信问题)的任何错误。 长话短说,在调用Dispose()时,客户端的Close()方法会触发,但会因为处于故障状态而引发错误。 原来的exception然后被第二个exception所掩盖。 不好。 MSDN文章中build议的解决方法是完全避免使用using块,而是实例化客户端并使用它们: try { … client.Close(); } catch (CommunicationException e) { … client.Abort(); } catch (TimeoutException e) { … client.Abort(); } catch (Exception e) { … client.Abort(); throw; } 相比于using块,我认为这是丑陋的。 每当你需要一个客户端时,需要写很多代码。 幸运的是,我发现了一些其他的解决方法,比如IServiceOriented上的这个。 你从以下开始: public delegate void UseServiceDelegate<T>(T proxy); […]