我是WCF的新手,我尝试对数据成员添加限制。例如在这个方法中:[DataMember]publicstringStringValue{get{returnstringValue;}set{stringValue=value;}}我想设置最大和最小长度。我知道如何将限制添加到XML代码中但是有没有办法直接从代码中添加限制? 最佳答案 根据MSDN,maxLength,minLength和length等被忽略。没有声明的方式来强制执行你的要求,就像我希望的那样。这是.NET和XML世界之间出现裂痕的地方之一。我发现的唯一执行方法是构建一
我有一个WCF层,我的领域模型在这个WCF层后面。我正在使用Nhibernate作为ORM工具,我所有的业务逻辑/数据访问等都将在这个WCF层之后。我正在向我的客户公开DTO。我有以下问题1)我应该创建DTO吗?将实体直接暴露给wcf客户端有什么坏处,因为我的实体也会有业务逻辑方法,这样做我将不得不用我认为不好的WCF属性破坏我的实体对象?2)如果我公开DTO,我是否应该验证DTO以及实体。如果我只验证DTO,那么我不会为我的Enitity对象提供任何输入验证。这样可以吗?3)我是否应该考虑使用模式验证在应用程序服务层(WCF层)中验证DTO?或者我应该使用文章[博客]中给出的IVal
我创建了一个类库项目,其中包含EntityFramework对象,该对象将负责我的多个项目的公共(public)数据访问层。将生成的dll文件添加到我的域项目并使用类库项目中的实体对象后,我面临以下问题。在应用程序配置文件中找不到名为“ABC”的连接字符串。我已经将edmx的MetadataArtifact处理属性设置为EmbedinOutputAssembly。App.Config标记实体代码如下publicABC_IntegrationEntities():base("name=ABC"){}还有一件事:我正在从数据目录“App_Data”访问数据库。我引用的博客来自dotnetc
我们有一个通过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
我目前正在开发一个c#.NET桌面应用程序,它将通过WCF和WCF数据服务通过Internet与数据库进行通信。应用程序中会有很多地方可能需要每隔一段时间刷新一次。最简单的解决方案是将这些区域放在计时器上并重新查询数据库。然而,由于有成千上万的客户端连接到服务层并因此连接到数据库,这些操作对服务器来说将是非常昂贵的。我考虑的是创建一个由客户端轮询的RSS提要,并让客户端知道何时需要更新这些特定区域。RSS提要将由一项服务管理,该服务要么轮询数据库以获取更改,要么遍历由客户端发出的WCF请求排队的项目列表。我也考虑过从客户端到服务器创建一些直接和持续的连接,但我不确定从客户端打开哪些出站
我有以下场景:我的主应用程序(APP1)启动了一个进程(SERVER1)。SERVER1通过命名管道托管WCF服务。我想连接到这个服务(来自APP1),但有时它还没有准备好。我创建了ChannelFactory,打开它并让它生成一个客户端。如果我现在在生成的客户端上调用一个方法,我会收到一条异常消息,告诉我找不到Enpoint:varfactory=newChannelFactory(newNetNamedPipeBinding(),newEndpointAddress("net.pipe//localhost/myservice");factory.Open()varClient=f