Tag: wcf client

如何使您的服务参考代理URL动态化?

我有一个Web服务的Web引用: using (var client = new GetTemplateParamSoapClient(“GetTemplateParamSoap”)) { TemplateParamsKeyValue[] responsArray = client.GetTemplatesParamsPerId( CtId, tempalteIds.ToArray()); foreach (var pair in responsArray) { string value = FetchTemplateValue(pair.Key, pair.Value); TemplateComponentsData.Add(pair.Key, value); } } 试图从c#代码更改Web引用URL:作为建议: 1) http://www.codeproject.com/KB/XML/wsdldynamicurl.aspx 2) 如何使用可配置的URL调用Web服务 3) http://aspalliance.com/283_Setting_Web_Service_References_Dynamically 但是当我尝试做的时候,我发现符号丢失了: client.Url 另外我找不到“Url_behavior”的属性

如何在发出请求之前将WCF Http客户端绑定到特定的出站IPAddress

我希望我的请求通过特定的IP地址发出。 有没有办法在WCF中这样做。 我为什么需要这个的解释是有点长的啰嗦,所以我宁愿不进入那个。 这是示例代码 string ipAddress = “192.168.0.32”; IService service; ChannelFactory factory = new ChannelFactory(new BasicHttpBinding(), new EndpointAddress(“http://” + IPAddress + “:6996/IService”)); service = factory.CreateChannel(); service.Test(); 这是一个示例场景,准确解释我正在寻找什么。 假设我的机器上有两个IP(192.168.0.30和192.168.0.31)。 它们都可以达到192.168.0.32。 如果我现在运行此代码,它将从我的任何IP(.30或.31)中获取IP(.32)。 我如何强迫它通过我的特定IP(比如.30)。 有什么方法可以使用WCF吗?

如何在客户端项目中添加服务引用?

我是WCF的新手所以请说明你是否发现了我在这里完全错误的事情。 我创建了一个WCF服务项目(我的服务类是从ServiceBase类中提取的),端点地址绑定设置为basicHttpBinding。 现在我需要创建一个可以从此服务调用某些API的客户端应用程序。 我的问题是,在我的客户端应用程序中,如何添加对该服务的服务引用。 我是否需要首先在IIS下发布此服务(这意味着我也必须在计算机上使用IIS),或者是否还有其他一些添加服务引用的方法。

如何强制.net WCF客户端在basicHttpBinding中使用NTLM?

现在我的安全节点定义如下: 我得到以下错误: HTTP请求未经授权使用客户端身份validation方案“Negotiate”。 从服务器收到的身份validation标头是“NTLM”。

WCF System.Object序列化

我有一个要求,我必须使用System.Object作为WCF中的参数。 因为它不可序列化,所以我收到消息,因为它不支持操作,因为它使用System.Object。 解决这个问题的任何方法。

WCF客户端error handling

我正在消耗一个笨重的WCF服务器,它偶尔会抛出各种exception,并且还会将一些错误作为string返回。 我根本无法访问服务器代码。 我想覆盖内部WCF客户端请求调用方法并处理服务器返回的所有内部exception和硬编码错误,并在发生错误时引发Fault事件,伪: class MyClient : MyServiceSoapClient { protected override OnInvoke() { object result; try { result = base.OnInvoke(); if(result == “Error”) { //raise fault event } catch { //raise fault event } } } 因此,当我调用myClient.GetHelloWorld() ,它会通过我的重写方法。 怎么能实现这一目标? 我知道我不必使用生成的客户端,但我不想再次重新实现所有合同,我想使用生成的ClientBase子类或至少使用它的通道。 我需要的是控制内部请求调用方法。 更新 我读了这个答案 ,看起来它部分是我正在寻找的,但我想知道是否有办法将IErrorHandler仅附加到消费者(客户端)代码,我想将它添加到ClientBase实例不知何故。 更新 这篇文章看起来很有希望,但它不起作用。 应用的属性似乎没有生效。 我找不到将IServiceBehavior添加到客户端的方法。 更新 我尝试通过IEndpointBehavior.ApplyClientBehavior调用附加IEndpointBehavior.ApplyClientBehavior : public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime […]

从客户端的不同文件加载WCF配置

许多人面临的WCF中的一个常见问题是不可能从不同的配置文件加载客户端配置。 这是开发人员想要部署一些二进制文件以及独立配置文件(也可能位于资源文件或其他配置文件中)以避免修改主配置文件时的常见情况。 我找到了两个参考: http://weblogs.asp.net/cibrax/archive/2007/10/19/loading-the-wcf-configuration-from-different-files-on-the-client-side.aspx http://social.msdn.microsoft.com/forums/en-US/wcf/thread/f33e620a-e332-4fd4-ae21-88c750437355/ 哪个是关于它的最佳解决方案? 有关最佳解决方案的任何建议吗? 我使用VS 2008和.NET 3.5。

如何从一个客户端使用多个WCF服务

我还在学习整个WCF的事情,所以请在这里忍受我。 我所拥有的是使用C#和VS 2008创建的两个自托管服务: 服务#1添加两个数字并返回结果。 服务#2返回数字的平方。 我希望客户能够向服务1发送两个号码,得到总和,然后将总和发送到服务2并获得正方形。 我为这两个服务都有两个生成的代理,我可以在它们上使用Intellisense,因此该部分可以正常工作。 现在我如何配置我的app.config文件,以便我可以与这两个服务进行通信? 现在,每当我尝试这样做时,我都会得到一个例外。 [如果我一次只在app文件中有一个配置,客户端工作正常,并尝试只调用该服务器。] 我想这是一个非常无趣的问题,答案可能是“以_____方式构建配置文件”,但Google似乎没有示例/指南。 有人知道怎么做吗? 注意: 从一个客户端客户端使用多个WCF服务虽然听起来像重复不是我想要的。 编辑:感谢marc_s,我得到了它的工作 由于两个服务都运行在不同的应用程序中,我不需要拆分服务器配置文件,但这是我对客户端配置文件所做的:首先使用SvrUtil.exe自动生成配置文件,然后以这种方式合并它们: … … … …

WCF奇怪的行为

我在使用Web服务时得到了这个: 合同’IServices’的操作’Login’指定要序列化的多个请求体参数,而不包含任何包装元素。 最多可以在没有包装元素的情况下序列化一个body参数。 删除额外的body参数或将WebGetAttribute / WebInvokeAttribute上的BodyStyle属性设置为Wrapped。 我使用界面看起来像: namespace DreamServices { // NOTE: You can use the “Rename” command on the “Refactor” menu to change the interface name “IService1” in both code and config file together. [ServiceContract] public interface IServices { [OperationContract] [WebInvoke(Method = “GET”, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = “LogIn/{username}/{password}”)] string Login(string […]

如何防止out-parameter结束WCF Web服务中的返回参数?

如果我的合同如下: [OperationContract] void DoSomething(int id, out string moreInfo); 这最终看起来像: string DoSomething(int id); 导入Web服务引用时。 是否有可能影响参数顺序的自动转换? 在函数签名的开头找到所有out参数已经令人惊讶了,但这仍然可行,但我们希望void-methods继续作为void-methods。 或者这是SOAP限制?