Tag: #wcf

WCF服务默认是无状态的吗?

我有一个简单的WCF服务,允许客户端/消费者应用程序通过提供用户名和密码登录。 如果用户名和密码都正确,则WCF服务为客户端提供GUID。 然后将GUID和用户名存储为WCF服务中的键/值对。 从此处开始,客户端将每个请求的GUID作为识别手段发送。 由于我将键/值对存储在Dictionary / Hashmap中,因此只有在WCF服务有状态时,此方法才有效。 问题是,它们是默认的有状态还是我必须做些什么才能使它们以这种方式运行?

WCF中的IPv4远程地址

与如何获取WCF远程端点的IP地址有关? 我在调用工作流方法时使用此代码检索远程IP地址: private static string GetRemoteIP() { var oc = OperationContext.Current; var mp = oc.IncomingMessageProperties; var remp = mp[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; return remp == null ? “(unknown)” : remp.Address; } 但是,我得到的地址是“:: 1”。 我不想要IPv6地址,我想要IPv4(127.0.0.1) – 任何强制这种方式?

WCF OperationContract – 我应该公开哪种通用集合类型?

我有一个WCF Web服务,它有一个返回generics集合的方法。 现在,我的问题是:我应该将它暴露为ICollection , List , IList , IEnumerable还是其他什么? 我想List是不可能的 ,因为我想避免CA1002错误 ,但底层类型将是List 。 我真的很想听听你对此的看法,最好能够很好地解释你为何如何思考自己的想法。 提前致谢

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

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

带有BaseAddress的HttpClient

我在使用HttpClient和BaseAddress属性调用webHttpBinding WCF端点时遇到问题。 HttpClient的 我创建了一个HttpClient实例,将BaseAddress属性指定为本地主机端点。 GetAsync Call 然后我调用GetAsync方法传递额外的Uri信息。 HttpResponseMessage response = await client.GetAsync(string.Format(“/Layouts/{0}”, machineInformation.LocalMachineName())); 服务端点 [OperationContract] [WebGet(UriTemplate = “/Layouts/{machineAssetName}”, ResponseFormat = WebMessageFormat.Json)] List GetLayouts(string machineAssetName); 问题 我遇到的问题是,BaseAddress的/AndonService.svc部分被截断,因此结果调用转到https://localhost:44302/Layouts/1100-00277而不是https://localhost:44302/AndonService.svc/Layouts/1100-00277导致404 Not Found。 是否有理由在GetAsync调用中截断BaseAddress? 我该如何解决这个问题?

WCF Restful服务文件上传,支持多平台

任何人都可以请告诉我如何创建一个WCF Rest服务,通过它我可以使用android,iphone和WP7将文件上传到服务器。

如何将WPF DataGrid绑定到ObservableCollection

你能给我一个如何将WPF DataGrid绑定到ObservableCollection的技巧吗? 我看过一些post并没有找到直接答案。 这里和任何地方都有错综复杂的问题,但我的问题并不复杂。 我有一个可观察的集合和WPF DataGrid。 它们都在WPF应用程序中,它是双工合同WCF服务的客户端。 这是一个ObservableCollection: private ObservableCollection _myCollection = new ObservableCollection(); public ObservableCollection DownloadsCollection { get { return this._downloadsCollection; } } 这是DataGrid的XAML标记: . . . . . . . . 这是myClass类。 它在WCF服务中实现。 客户端从具有双工合同的WCF服务接收回调中的MyClass实例。 在收到MyClass的每个实例之后,将其放入ObservableCollection中以替换具有相同唯一标识符的前一个实例。 [DataContract] public class MyClass { #region Properties /// /// Downloading unique ID. /// [DataMember] public Guid UniqueId { […]

WCF应用程序中的会话变量

我需要在我的WCF应用程序中使用或激发一个非常简单的会话对象。 我只需要在调用开始时存储一些值,我需要访问这些值,同时我会通过一些不同的服务方法。 Asp.NET会话非常适合用于此,因此我需要找出WCF应用程序上可用于存储此类值的内容。 注意:这只是一个每次通话会话,我不需要在从客户端到服务等的不同调用之间保留此会话。

AppDomains之间的通信

我们正在构建一个应用程序(WinForms,.NET 3.5),它将“插件”DLL加载到辅助AppDomain中。 辅助AppDomain需要偶尔与第一个AppDomain通信(更具体地说,从主AppDomain中创建的对象调用或获取数据)。 我已经阅读了有关AppDomains的大部分内容以及它们之间的通信。 到目前为止,我见过的唯一简单的解决方案是从MarshalByRefObjectinheritance并将TransparentProxy传递到第二个AppDomain,在Proxy上调用方法。 此方法有其缺点(例如,在框架类型的情况下,或者从已经从其他类inheritance的类型,静态字段/类等等,并不总是可以从MBROinheritance)。 由于当前的通信点非常不变(只有2-3个需要通信的场景),我考虑创建一个具有以下属性的简单Mediator类: 将在1st(Main)AppDomain中创建。 只能作为主要AppDomain中创建的“Real”对象的“消息传递器”。 将inheritance自MBRO,并将其代理引用发送到第二个AppDomain。 将调用此代理对象上的方法,然后调用第一个AppDomain中“真实”对象上的方法。 我的问题 – 这看起来像是一个逻辑设计吗? 更重要的是,WCF或任何其他通信框架中是否已存在调解器/消息传递器类? 它似乎是一个通用的概念,我想知道是否有类似的东西。

WCF客户端挂起响应

我有一个指向WebSphere服务的WCF客户端(在Win7上运行)。 从测试工具(我的Web应用程序之外的一个小测试夹具)开始,一切都很好但是当我对服务的调用来自我的web项目时,其中一个调用(并且只有那个调用)反序列化的速度非常慢(需要几分钟VS秒)而不仅仅是第一次 。 我可以从fiddler看到响应快速返回,但是在调试器遇到下一行代码之前,WCF客户端挂起响应本身超过一分钟 ,几乎如果客户端反序列化有问题。 只有在响应中我有一个给定的pdf字符串(操作生成一个pdf),base64编码的chunked时才会发生这种情况。 例如,如果服务引发了错误(因此pdf字符串不存在),则立即反序列化响应。 再次,如果我通过Soap-UI或从Web项目外部发送完全相同的信封,一切都很好。 我很遗憾 – 我应该寻找什么,是否有一些配置设置可能会有所作为? 任何帮助赞赏! 编辑 : 我根据相同的服务合同编写了一个存根。 使用完全相同的basicHttpBinding并返回完全相同的pdf字符串,没有注册延迟。 我认为这排除了字符串和绑定作为可能的原因。 还剩什么?