我有一个在VisualStudio中运行的简单网络服务。如果我尝试查看元数据,它会丢失有关操作的信息,因此svcutil会生成没有任何方法的客户端代码。我的设置有什么问题吗?接口(interface):[System.ServiceModel.ServiceContractAttribute(Namespace="http://Test/Publish",ConfigurationName="IFCRPublish")]publicinterfaceIFCRPublish{//CODEGEN:GeneratingmessagecontractsincetheoperationPubli
开发WCF服务层时捕获和记录错误的最佳方法是什么?为什么?我可以想到三种方法,1)围绕每个方法手动尝试/捕获。2)将责任留给WCF引擎。3)使用第三方库,例如企业库策略注入(inject)/日志记录。 最佳答案 我会实现自定义IErrorHandler并使用log4net[AttributeUsage(AttributeTargets.Interface)]publicclassErrorPolicyBehaviorAttribute:Attribute,IContractBehavior,IErrorHandler{private
在我的界面中我已经声明了这一点。[OperationContract][WebGet]StringGetStuff(Stringbeep,Stringboop="toolazytotype");我是这样实现的。StringGetStuff(Stringbeep,Stringboop="toolazytotype"){...}它编译并上传为我的WCF服务。但是,当我将它用作Web引用并尝试执行下面的代码时,编译器提示说没有带有单个参数签名的方法。最后一行是问题所在。我怎么能懒得打字默认?ServiceClientclient=newServiceClient();client.GetSt
我有一组托管在.NET4应用程序上的WCF服务。我手动创建ServiceHost类并开始监听TCP端口。一切都按预期工作,但在服务器端的WCF跟踪中,我收到以下警告。未找到配置评估上下文。XML跟踪如下:524312304BAROLOhttp://msdn.microsoft.com/it-IT/library/System.ServiceModel.EvaluationContextNotFound.aspxConfigurationevaluationcontextnotfound.Server.Console.vshost.exe知道警告的原因吗?谢谢
我正在处理与SOAP服务的接口(interface),该服务似乎不处理默认namespace,但可以很好地处理在SOAP信封级别声明的全局namespace和namespace前缀。问题是WCF不会在根目录下创建这些全局命名空间,而是使用显式的无前缀默认命名空间,而服务显然会阻塞这些默认命名空间。现在我知道这并不是WCF的错——我相信WCF生成的消息是有效的XML,但服务仍然会阻塞它。使用WCF生成的输出如下所示:2016-03-26T01:44:37.0493801Z2RMG-API-G-01ozhckwej6sxgTTT001908905GB这是行不通的。使用以下SOAP信封(在S
我有一个托管WCF服务的控制台应用程序。我希望能够从WCF服务中的方法触发事件并在WCF服务的托管进程中处理事件。这可能吗?我该怎么做?我可以从ServiceHost派生自定义类吗? 最佳答案 您不需要从ServiceHost继承。还有其他方法可以解决您的问题。您可以将服务类的实例而不是类型传递给ServiceHost。因此,您可以在启动ServiceHost之前创建实例,并将您自己的事件处理程序添加到它公开的任何事件。下面是一些示例代码:MyServicesvc=newMyService();svc.SomeEvent+=newM
开始使用简单的WCF服务时,我有点不知所措。我有两种方法,我想将一种方法公开给全世界,另一种方法我想限制某些用户使用。最终我希望能够使用客户端应用程序来使用受限方法。到目前为止,我可以匿名访问这两种方法:C#代码namespaceserviceSpace{[ServiceContract]interfaceILocationService{[OperationContract]stringGetLocation(stringid);[OperationContract]stringGetHiddenLocation(stringid);}[AspNetCompatibilityRequ
我正在使用以下代码:privateWSHttpBindingws;privateEndpointAddressSrv_Login_EndPoint;privateChannelFactorySrv_LoginChannelFactory;privateSrv_Login.Srv_ILoginLoginService;Login是我的构造函数:publicLogin(){InitializeComponent();ws=newWSHttpBinding();Srv_Login_EndPoint=newEndpointAddress("http://localhost:2687/Srv_L
如果我调用WCF服务方法,我将执行如下操作:proxy.DoSomethingAsync();proxy.DoSomethingAsyncCompleted+=OnDoSomethingAsyncCompleted;我如何使用新的async做同样的事情?CTP?我想我需要类似proxy.DoSomethingTaskAsync的东西或proxy.DoSomethingAsync().ToTask()?Web服务调用需要返回Task能够使用await关键字,但如何?? 最佳答案 在CTP中,有一些工厂方法可以将常规APM函数(开始/结
我正在编写带有“状态工具”的Windows服务。该服务托管一个用于进程间通信的WCF命名管道端点。通过命名管道,状态工具可以定期查询服务的最新“状态”。在我的开发机器上,我有多个IP地址;其中之一是具有192.168.1.XX地址的“本地”网络。另一个是“企业”网络,地址为10.0.X.XX。Windows服务收集单个IP地址上的UDP多播流量。到目前为止,只要使用“192.168.1.XX”地址,Windows服务就可以正常工作。它始终如一地向客户端正确报告状态。当我切换到另一个“公司”IP地址(10.0.X.XX)并重新启动服务后,我在检索状态时收到连续的“Communicatio