草庐IT

c# - 如何编写具有内存持久存储的 WCF 服务?

我编写了一个WCF服务,但存储在服务实现中的数据不会在调用之间持续存在,即使存储在静态变量中也是如此。我能做什么?服务实现如下:publicclassStorage:IStorage{protectedstaticobject[]_data;#regionIStorageMemberspublicvoidInsert(object[]data){lock(_data){_data=_data.Concat(data).ToArray();}}publicobject[]SelectAll(){lock(_data){return(object[])_data.Clone();}}#en

c# - WCF 中 OperationTimeout 和 SendTimeout 的区别

经过相当多的搜索,我找不到这个问题的答案。OperationTimeout之间的确切区别是什么?和SendTimeout?我读到OperationTimeout是SendTimeout的子集,SendTimeout包括在channel中写入消息。如果您提供更多详细信息,那就太好了。我的第二个问题是我有客户端调用服务,我只想在请求发送到服务器后不久和收到服务器回复后不久之间设置超时。如何设置这个超时? 最佳答案 我想建议阅读thisanswer来自BrianMcNamara在MSFT论坛上:Briefsummaryofbindingt

c# - 如何将 lambda 表达式传递给 WCF 服务?

我当前的项目使用的是IDesign架构,所以我所有的层都是服务。我想让资源访问层的CRUD中的Read方法采用lambda表达式形式的谓词以及要提取的相关对象列表。这样资源访问层就会非常通用。[OperationContract]ResultReadObjects(Funcpredicate,string[]includes);现在我发现了一些本来应该很明显的事情,那就是我无法序列化lambda表达式。我研究过将字符串解析为lambda表达式,但这也是行不通的。有什么方法可以用来将lambda表达式传递给服务吗?有没有更好的方法来完成我想做的事情? 最佳答案

c# - 更改 WCF 中的默认日期序列化

有没有办法更改WCF中DateTime的默认JSON序列化/反序列化?目前,DateTime被序列化为/Date(1372252162657+0200)/格式,这应该没问题,但当我的服务器不在UTC时(我不能改变)。此服务正在处理的所有日期/时间数据均采用UTC格式。当服务器处于UTC时,一切正常。但是,staging/prod环境设置为GMT+1(巴黎)并且序列化程序假定日期/时间为GMT+1,完全忽略属性Kind。因此,正如您所期望的那样,调用DateTime.SetKind()并将其设置为UTC将不起作用。实际上,序列化时间延迟了一个小时。我可以进行双向日期对话(它在反序列化时也

c# - 如何在 WCF RESTful 服务上启用 HTTPS?

如何使wcf在https上工作。我想通过https使用此wcf我已经搜索了很多文章我没有得到答案请帮助我是wcf概念的新手。我想从ajax、jquery调用它 最佳答案 看起来您正在使用WCF构建RESTful服务,并且您非常接近保护它。为了保护它,您需要执行以下操作:添加一个新的WebHttpBinding配置,将安全模式设置为Transport。将新的WebHttpBinding配置分配给您的服务端点绑定(bind)。通过设置httpGetEnabled="false"确保您的RESTful服务只能通过HTTPS访问。设置元数据

c# - WCF。服务泛型方法

如何在wcf服务中使用泛型方法?我写了这段代码:[OperationContract]voidAddItem(Titem);但我收到以下错误:Type'T'cannotbeexportedasaschematypebecauseitisanopengenerictype.Youcanonlyexportagenerictypeifallitsgenericparametertypesareactualtypes. 最佳答案 你根本做不到。这是不可能的,因为soap不支持这个。看这个article,其中提到如何绕过泛型,方法是创建一个

c# - WCF 发现根本不起作用

我正在尝试将临时发现添加到简单的WCF服务客户端设置(目前通过控制台应用程序中的自托管实现)。在Windows7上使用VS2010进行调试,并执行我在在线教程中可以找到的任何内容,但仍然-发现客户端什么也没找到。不用说,如果我将客户端打开到正确的服务端点,我就可以从客户端访问该服务。服务代码:using(varselfHost=newServiceHost(typeof(Renderer))){try{selfHost.Open();...selfHost.Close();服务应用程序配置:客户端发现代码:DiscoveryClientdiscoveryClient=newDiscov

c# - WCF契约不匹配问题

我有一个与WCF服务通信的客户端控制台应用程序,但出现以下错误:“服务器没有提供有意义的回复;这可能是由于契约(Contract)不匹配、session过早关闭或内部服务器错误造成的。”我认为这是因为契约(Contract)不匹配,但我不明白为什么。该服务本身运行良好,并且这两个部分一起工作,直到我添加了模拟代码。谁能看出哪里出了问题?这是客户端,全部用代码完成:NetTcpBindingbinding=newNetTcpBinding();binding.Security.Mode=SecurityMode.Message;binding.Security.Message.Clien

c# - WCF 中的 mex 绑定(bind)错误

我正在使用VSTS2008+C#+.NET3.0。我正在使用自托管WCF服务。执行以下语句时,出现如下“找不到绑定(bind)”的错误。我已经发布了整个app.config文件,有什么问题吗?ServiceHosthost=newServiceHost(typeof(MyWCFService));错误信息:CouldnotfindabaseaddressthatmatchesschemehttpfortheendpointwithbindingMetadataExchangeHttpBinding.Registeredbaseaddressschemesare[https].完整的应用

c# - 如何在不读取结束的情况下中止来自 WCF 服务的流?

这是我上周一直在调查的问题,但找不到任何解决方案。发现有相同问题但从未得到答案的帖子,希望这对其他人也有帮助。我有一个WCF返回包含stream的对象的服务在里面。我用basicHttpBinding使用流传输和Mtom将其发送到客户端。客户端调用WCF服务并在收到响应对象后立即关闭代理。接下来,客户端读取它从WCF服务获得的流并将其写入本地磁盘上的文件。所有这一切都很好。我的问题是当客户端想要中止操作并停止从WCF服务下载数据时。如果我调用.close()在流中,例如:serverReply.DataStream.Close();然后它会阻止并从WCF服务读取整个流,直到结束,然后再