.NET3.5、VS2008、使用BasicHttpBinding的WCF服务我在Windows服务中托管了一个WCF服务。当Windows服务关闭时,由于升级、定期维护等,我需要优雅地关闭我的WCF服务。WCF服务的方法最多可能需要几秒钟才能完成,典型的数量是每秒2-5次方法调用。我需要以允许任何先前调用方法完成的方式关闭WCF服务,同时拒绝任何新调用。通过这种方式,我可以在大约5-10秒内达到安静状态,然后完成Windows服务的关闭周期。调用ServiceHost.Close似乎是正确的方法,但它会立即关闭客户端连接,而无需等待任何正在进行的方法完成。我的WCF服务完成了它的方法
我有一个类需要能够序列化为SQLServersession变量并可通过WCF服务使用。我声明如下namespaceMyNM{[Serializable][DataContract(Name="Foo",Namespace="http://www.mydomain.co.uk")]publicclassFoo:IEntity,ISafeCopy{[DataMember(Order=0)]publicvirtualGuidId{get;set;}[DataMember(Order=1)]publicvirtualstringa{get;set;}DataMember(Order=2)]pu
我是WCF的新手,我尝试对数据成员添加限制。例如在这个方法中:[DataMember]publicstringStringValue{get{returnstringValue;}set{stringValue=value;}}我想设置最大和最小长度。我知道如何将限制添加到XML代码中但是有没有办法直接从代码中添加限制? 最佳答案 根据MSDN,maxLength,minLength和length等被忽略。没有声明的方式来强制执行你的要求,就像我希望的那样。这是.NET和XML世界之间出现裂痕的地方之一。我发现的唯一执行方法是构建一
我们有一个通过WCF托管的SOAP网络服务。我们偶尔从其中接收数据的客户端之一使用非最短格式对UTF-8进行编码(有关这方面的一些信息,请参阅http://www.unicode.org/versions/corrigendum1.html)。修改客户端并不容易,因为我们的代码没有对这些非最短形式的字符进行编码。相反,我们希望编辑WCF服务以丢弃这些字符,将它们替换为其他占位符字符,甚至接受非最短形式的字符。对于我们的用例,这些中的任何一个都是可以接受的,尽管前一个选项是首选,因为它们减少了任何安全风险。查看堆栈跟踪:System.ServiceModel.Dispatcher.Net
我目前有2个暴露的端点。第一个是WebAPI(.NET4.6)。第二个是WCF(.NET3.5)。它们都能够执行相同的计算,但是WCF平均要慢10倍。有问题的计算代码包含在一个dll中,我们称之为core.dll。此dll还公开WCF端点并由ASP.NET站点使用。webapidll,我们称它为api.dll引用core.dll并由SPA使用。计算可以由任一客户端触发。平均而言,使用我的测试数据,WCF服务执行计算大约需要4.5秒,而WebAPI大约需要450毫秒(或快大约10倍)。我应该注意,所有数据库调用都是在测量的时间范围之外完成的。所有数据都是事先检索的,所有更新都是在计算完成
我们得到“通信对象System.ServiceModel.Channels.ServiceChannel无法用于通信,因为它处于故障状态。”关闭应用程序时的消息。谁能告诉我如何解决它?我们知道这是试图关闭的通信channel,但由于服务不可用或处于故障状态而无法关闭。我只能说,当服务不可用时,垃圾收集器试图销毁对象,通信对象正在调用其服务关闭函数。我们得到异常。 最佳答案 当您询问有关异常的问题时,您应该发布整个异常,包括所有InnerException实例。你应该捕获异常,显示ex.ToString(),然后用“throw”重新抛
这个问题在这里已经有了答案:checktheavailabilityoftheWCFWebService(4个答案)关闭8年前。我有一个客户端-服务器系统,双方都是我写的,我想在服务器断开连接/死机时将客户端置于“离线”状态,然后在服务器断开连接/死机时自动将它们恢复为“在线”状态再次可用。对于第一部分,我监听channel故障事件并通过将客户端设置为离线来处理该事件。然后我开始在服务器上调用“ping”服务(每30秒一次),如果它处于事件状态,它只会返回一个bool值。一旦它还活着,客户端就会得到bool并切换回在线状态。一切正常,我遇到的问题是当客户端调用ping服务并且服务器关闭
嘿,我没有将wcf变成一个Restful服务。所以我想知道当您在这里启动WCF服务应用程序时是否有人可以使用基本代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Runtime.Serialization;usingSystem.ServiceModel;usingSystem.ServiceModel.Web;usingSystem.Text;namespaceWcfService1{//NOTE:Youcanusethe"Rename"commandonthe"Refactor"m
我有以下场景:我的主应用程序(APP1)启动了一个进程(SERVER1)。SERVER1通过命名管道托管WCF服务。我想连接到这个服务(来自APP1),但有时它还没有准备好。我创建了ChannelFactory,打开它并让它生成一个客户端。如果我现在在生成的客户端上调用一个方法,我会收到一条异常消息,告诉我找不到Enpoint:varfactory=newChannelFactory(newNetNamedPipeBinding(),newEndpointAddress("net.pipe//localhost/myservice");factory.Open()varClient=f
我有一个这样的仓库:publicabstractclassDbRepository:IDbRepository{publicTEntityInsert(TEntityentity)whereTEntity:class{_context.Entry(entity).State=EntityState.Added;returnentity;}publicTEntityUpdate(TEntityentity)whereTEntity:class{_context.Entry(entity).State=EntityState.Modified;returnentity;}}服务契约(Con