草庐IT

c# - 将结构与 WCF 服务一起使用

对于使用结构作为WCF服务的返回类型是否有官方建议?我目前正在与一个不是我编写的服务进行交互,我发现自己受到启发去询问是否有必要让我感到烦恼。我过去一直使用类-部分原因可能是示例总是显示的内容,但正如我现在所想的那样,出于其他“直觉”原因:我通过定义一个单独的项目来开始契约(Contract)风格,该项目的接口(interface)表示将由服务来回传递的类型。我经常使用LINQ,因此可空性测试对于引用类型是隐式的,而对于结构和其他值类型,我总是需要将其标记为可为空。虽然我承认它比我脑海中的项目符号列表更直观,但我会立即想到这些。我想问这个问题是因为我正在处理返回结构的服务并且在处理返回

c# - HTTP header 或 SOAP header 中的 WCF Soap Actions?

我对SOAPAction是如何在WCF(以及与此相关的其他Web服务框架)中实现的感到有点困惑。在测试客户端中,我有一个客户端消息检查器,配置为抓取随请求发送的SOAP消息和任何HTTPheader。至少在客户端消息检查器中,操作显示为SOAPheader中的一个元素:http://myurl.com/2009/11/MyService/MyMethod但是,如果我在Fiddler中查看请求,Action元素会丢失,取而代之的是现在HTTPheader中有一个附加条目:SOAPAction:"http://myurl.com/2009/11/MyService/MyMethod"谁能解

c# - 如何在 WCF 中将接口(interface)标记为 DataContract

我有两个数据类,它们只包含数据成员(没有函数)。一个是CallTask​​,另一个是SmsTask。这两个类有一些共同的属性,如ID、Tel。我将这些公共(public)属性放在一个单独的接口(interface)类中,并在适当的时候在我的项目中使用这个接口(interface)类。现在我在我的项目中添加了一个WCFService以在客户端和服务器之间共享数据。考虑以下类设计:publicinterfaceIGsmTask:IComparable{stringTaskID{get;set;}stringSessionID{get;set;}stringTel{get;set;}}cla

c# - WCF 服务方法在 WCF 测试客户端中不可用,因为它使用类型

我正在尝试使用WCF测试客户端来测试我构建的WCF服务。该服务有一个方法“SubmitRequest”。[OperationContract]ResponseSubmitRequest(Requestrequest);当我加载WCF测试客户端时,该方法变灰并显示消息“WCF测试客户端不支持此操作,因为它使用类型WcfLibrary.Objects.Request下面是类型定义,有没有人看出什么不对?[DataContract]publicclassRequest{[DataMember]publicstringLoanNumber{get;set;}[DataMember]public

c# - 在使用 HTTPS 443 绑定(bind)托管的 WCF 服务中获取客户端 IP 地址

在我的一个应用程序中,需要使用HTTPS443绑定(bind)托管的WCF服务中的客户端IP地址。我尝试了堆栈溢出和其他网站上关于这个问题的大部分帖子,但是当我在服务器上托管我的应用程序时,它只是获取服务器IP地址,但我需要请求的客户端地址,任何人对此有任何想法提前致谢.. 最佳答案 在.NET3.5中,您可以使用以下模式(使用System.ServiceModel)OperationContextcontext=OperationContext.Current;MessagePropertiesprop=context.Incom

c# - 用于记录方法调用和异常的 WCF 服务属性

我需要记录WCF服务中的每个方法调用以及抛出的所有异常。这导致了很多冗余代码,因为每个方法都需要包含类似于这样的样板文件:[OperationContract]publicResultBaseAdd(intx,inty){varparameters=newobject[]{x,y}MyInfrastructure.LogStart("Add",parameters);try{//actualmethodbodygoeshere}catch(Exceptionex){MyInfrastructure.LogError("Add",parameters,ex);returnnewResul

c# - .Net Remoting 与 WCF

我正在开发一个将有1000个并发用户的.Net网站。我正在考虑将业务组件保留在应用服务器上,将UI组件保留在网络服务器上。数据库(MSSQLServer2005)将托管在另一台服务器上。我也打算使用负载平衡。鉴于此,如果我想获得最佳的应用程序性能和可扩展性,从Web服务器到应用服务器的最佳通信方式是什么? 最佳答案 可以查看hereWCF和其他通信技术(包括.Net远程处理)之间的性能比较。结论是:WCF更快。 关于c#-.NetRemoting与WCF,我们在StackOverflow

c# - WCF 元数据缺少操作

我有一个在VisualStudio中运行的简单网络服务。如果我尝试查看元数据,它会丢失有关操作的信息,因此svcutil会生成没有任何方法的客户端代码。我的设置有什么问题吗?接口(interface):[System.ServiceModel.ServiceContractAttribute(Namespace="http://Test/Publish",ConfigurationName="IFCRPublish")]publicinterfaceIFCRPublish{//CODEGEN:GeneratingmessagecontractsincetheoperationPubli

c# - 在 WCF 中记录错误的最佳方式

开发WCF服务层时捕获和记录错误的最佳方法是什么?为什么?我可以想到三种方法,1)围绕每个方法手动尝试/捕获。2)将责任留给WCF引擎。3)使用第三方库,例如企业库策略注入(inject)/日志记录。 最佳答案 我会实现自定义IErrorHandler并使用log4net[AttributeUsage(AttributeTargets.Interface)]publicclassErrorPolicyBehaviorAttribute:Attribute,IContractBehavior,IErrorHandler{private

c# - 为 WCF 实现接口(interface)时不能使用可选参数

在我的界面中我已经声明了这一点。[OperationContract][WebGet]StringGetStuff(Stringbeep,Stringboop="toolazytotype");我是这样实现的。StringGetStuff(Stringbeep,Stringboop="toolazytotype"){...}它编译并上传为我的WCF服务。但是,当我将它用作Web引用并尝试执行下面的代码时,编译器提示说没有带有单个参数签名的方法。最后一行是问题所在。我怎么能懒得打字默认?ServiceClientclient=newServiceClient();client.GetSt