Tag: #wcf

如何在文件中记录exception?

我希望能够记录每个catch块。 像这样的东西。 catch (Exception exception) { Logger.Write(exception); } 然后配置中的设置将使用客户监听器获取Message和StackTrace属性等。 我想使用Enterprise Library Logging Application Block。 我敢肯定有人必须已经这样做了。

为什么从WCF服务返回数据集或数据表不是一个好习惯? 有什么替代品?

我正在使用大学管理系统,我正在使用WCF服务,在服务中我使用DataTables和DataSets从数据库和数据库获取数据是sql server。 我的问题是 使用DataTables和数据集“良好实践”还是“不良实践”? 如果不好,DataTable / DataSet的替代方案是什么? 如果不好,主要原因是什么?

GetRequestStream随机抛出Timeoutexception

谷歌搜索了几天后,我真的无法解决所描述的问题。 希望在这里能找到解决方案 我在同一台服务器上调用WCF服务时使用附加代码。 我在调用WebReq.GetRequestStream()中随机获得Timeout错误 当我检查netstat时,我看到连接仍然打开,所以可能有问题,但我不知道如何解决它 //request inicialization HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url); WebReq.Method = “POST”; WebReq.ContentType = “application/json; charset=utf-8”; WebReq.ContentLength = buffer.Length; WebReq.Proxy = null; WebReq.KeepAlive = false; //also tried with true WebReq.AllowWriteStreamBuffering = false; //also tried with true //this produces an error using (Stream PostData = WebReq.GetRequestStream()) { PostData.Write(buffer, 0, buffer.Length); PostData.Close(); } //open and […]

在方法中使用多个参数时,WCF服务代理会引发exception

我有一个WebServiceHost,用于在控制台应用程序中托管一些Web服务。 我在我的客户端应用程序中添加了一个服务引用并创建代理,如下所示: var binding = new WebHttpBinding(); var endPoint = new EndpointAddress(string.Format(Settings.serviceBase, Settings.wcfPort)); ChannelFactory factory = new ChannelFactory(new WebHttpBinding(), endPoint); factory.Endpoint.Behaviors.Add(new WebHttpBehavior()); // **Exception occurs here** var proxy = (IzWaveSVC)factory.CreateChannel(); 它可以工作,但是一旦我添加了一个需要多个参数的新方法,我就会在创建代理时开始获取此exception(这是在任何通信发生之前): Operation ‘setDeviceState’ of contract ‘IzWaveSVC’ specifies multiple request body parameters to be serialized without any wrapper elements. At most one body parameter can be […]

WCF:序列化和反序列化通用集合

我有一个拥有通用列表的类Team: [DataContract(Name = “TeamDTO”, IsReference = true)] public class Team { [DataMember] private IList members = new List(); public Team() { Init(); } private void Init() { members = new List(); } [System.Runtime.Serialization.OnDeserializing] protected void OnDeserializing(StreamingContext ctx) { Log(“OnDeserializing of Team called”); Init(); if (members != null) Log(members.ToString()); } [System.Runtime.Serialization.OnSerializing] private void OnSerializing(StreamingContext ctx) { […]

WCF服务返回字典数组

我一直在尝试使用SilverLight客户端来调用ASP.Net WCF服务,该服务将返回Dictionary 。 当字典中的值是int , string或Guid等简单类型时,这很好用。 但是,我现在有一个场景,我需要其中一个值为Dictionary的数组! 这一切都编译得很好,服务的签名没有改变,但服务调用现在失败了。 任何想法如何解决它? 我试图使用KnownType和ServiceKnownType属性来注释我的服务类和方法,但这不起作用。 这是一段代码: [ServiceContract(Namespace = “”)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service1 { [OperationContract] [ServiceKnownType(typeof(Dictionary))] public Dictionary GetObject() { return new Dictionary() { { “pty1”, 1 }, { “pty2”, Guid.NewGuid() }, { “pty3”, “blah” }, { “pty4”, new Dictionary[] { new Dictionary() { { “pty1”, 4 }, […]

构建动态表达式树以过滤集合属性

我正在尝试构建一个lambda表达式,它将与其他表达式组合成一个相当大的表达式树进行过滤。 这工作正常,直到我需要通过子集合属性进行过滤。 如何构建一个Lambda表达式,它将在集合的属性上使用Any()进行过滤,该集合属性是根对象的属性? 例: CurrentDataSource.Offices.Where(o => o.base_Trades.Any(t => t.Name == “test”)) 这是我如何静态构建表达式,但我需要动态构建它。 对困惑感到抱歉。 编辑:这是我如何处理不太复杂的表达式的片段: IQueryable officeQuery = CurrentDataSource.Offices.AsQueryable(); ParameterExpression pe = Expression.Parameter(typeof(Office), “Office”); ParameterExpression tpe = Expression.Parameter(typeof(Trades), “Trades”); Expression SimpleWhere = null; Expression ComplexWhere = null; foreach (ServerSideFilterObject fo in ssfo) { SimpleWhere = null; foreach (String value in fo.FilterValues) { if (!CollectionProperties.Contains(fo.PropertyName)) { //Handle […]

在IIS 6中托管.net 4.0 REST WCF服务

所以我在VS2010上使用.net 4.0运行iis 7 我有一个REST wcf 4.0 / .net 4.0服务,本地运行非常漂亮。 在我的本地,它托管在IIS上 HTTP://本地主机/ SOMENAME / [WebGet(UriTemplate = “Ping”)] public string CheckAuthenticatedStatus() { string userName; if (!AuthenticateUser(out userName)) { WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Unauthorized; return “Authenticaltion Failed”; } return “Ping Back – ” + userName; } [WebGet(UriTemplate = “AnonymousPing”)] public string CheckStatus() { return “AnonymousPing Back”; } 但是当我尝试在QA环境中部署它时(win2k3 .net 4 […]

Windows Service通过HTTPS托管WCF

我已根据MSDN的这些说明创建并配置了SSL证书。 我收到此问题列出的错误消息,但我不确定如何将该问题中接受的答案映射到我的App.config文件。 配置文件的内容和服务本身在http上正常工作,只是在https上发生了问题。 我的App.config文件目前是: Windows事件日志中返回的错误exception: 服务无法启动。 System.ServiceModel.AddressAlreadyInUseException:HTTP无法注册URL https:// +:54321 / MyService / 。 另一个应用程序已经使用HTTP.SYS注册了此URL。 —> System.Net.HttpListenerException:无法侦听前缀’ https:// +:54321 / MyService / ‘,因为它与计算机上的现有注册冲突。 有人可以给我一个关于如何启用它的指针吗?

WCF服务在方法请求上返回404

我有一个WCF服务页面只通过SSL运行WebGets / WebInvokes – 它在我的本地机器上工作正常(自签名证书)。 但是,在生产时,我可以访问service.svc(并且它向我提供有关如何使用的消息)但service.svc / AnyRequest返回404.两种环境都在IIS 7.5中托管。 我已经启用了跟踪,服务甚至没有获取任何方法请求(例如service.svc / SomeRequest),但它正在处理service.svc就好了。 它也在https://computername.domain.net/path/service.svc听 – 这是正常的吗? 它通常应该指向https://publicfacing.com/path/service.svc吗? 另请注意,生产服务器在IIS中托管多个站点。 下面是我的web.config的system.serviceModel部分。 从这里建议SSLBehave。