Tag: #wcf

学习WCF的基础知识

对于那些刚刚开始学习WCF的人来说 ,我应该先了解哪些主要/基本的东西并先学习? 您建议首先学习哪些概念,以便在WCF中高效? 您会向学习WCF的人推荐哪些资源/文章/培训/书籍? 例如,在C#中,可以在稍后阶段学习LINQ 。 沿着类似的路线,在WCF中也应该首先学习基础知识,然后将时间投入到高级function中以提高生产力。

从C#直接将原始SOAP XML发送到WCF服务

我有一个WCF服务参考: http://…/Service.svc(?WSDL) 我有一个包含兼容SOAP信封的XML文件 … 现在,我想通过一些C#代码将这些原始数据直接发送到服务(并接收响应),而不使用Visual Studio服务引用。 这是可能的,如果是的话,怎么样?

如何通过json Web服务接受参数(包括图像)并将其存储到SQL Server数据库中?

我收到一个错误: 合同’IService1’中的’addUser’操作有一个UriTemplate,它需要一个名为’PHONE_NO,DP,REG_ID’的参数,但操作上没有带该名称的输入参数。 我的代码: public interface IService1 { [OperationContract] void DoWork(); [OperationContract] [WebInvoke(Method = “POST”, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = “addUser/{phone_no,dp,reg_id}”)] void addUser(String phone_no, String dp, String reg_id); } 和addUser函数如下: public void addUser(String phone_no, String dp, String reg_id) { string conn = “”; conn = ConfigurationManager.ConnectionStrings[“Conn”].ToString(); SqlConnection objsqlconn = new SqlConnection(conn); objsqlconn.Open(); SqlDataAdapter […]

Wcf服务exception良好做法

我正在开发分布式应用程序。 在其中,我必须validation角色和权限集。 在例如未经授权的访问中抛出exception是一个很好的实践吗? 或者我应该将一些消息发回给客户?

如何在ASP.Net MVC应用程序中使用来自WCF身份validation服务的身份validationcookie

好吧,我很幸运能找到适合我特定场景的任何文档或教程。 我有一个ASP.Net MVC Web应用程序,它将使用WCF服务,包括身份validation和角色(通过WCF后端的成员资格提供程序)。 我设置身份validation服务没有问题,但它没有在Web应用程序中设置cookie。 服务的Login方法的文档表明可以连接CreatingCookie事件,但它对客户端没有任何影响(我在服务端尝试过,再次没有影响)。 所以我想出了如何捕获cookie 。 我试图在客户端上手动设置auth cookie,但到目前为止它没有工作; 由于填充而导致解密失败,并且客户端无法读取服务器给出的cookie值。 有人知道你应该如何使用WCF身份validation服务生成的cookie吗? 我是否只是假设会话全部在WCF服务器上进行管理,并且在每次加载页面时只检查服务上的IsLoggedIn()? 提前致谢。

使用设置为ConcurrencyMode.Multiple和I​​nstanceContextMode.PerCall的WCF服务行为属性时是否可能出现并发问题?

我们有一个WCF服务,可以进行大量的事务NHibernate调用。 偶尔我们会看到SQL超时,即使调用正在更新不同的行并且表被设置为行级锁定。 在深入研究日志之后,看起来不同的线程正在进入代码中的相同点(我们的事务使用块),并且更新挂起在提交上。 但是,这没有意义,因为我们认为以下服务类属性强制每个服务调用一个唯一的执行线程: [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)] 我们最近将并发模式更改为ConcurrencyMode.Single并且还没有遇到任何问题,但是这个bug很难重现(如果有人想要刷出这样的bug,请告诉我!)。 无论如何,这一切都让我想到了问题:PerCall的InstanceContextMode是否应该在服务中强制执行线程安全,即使ConcurrencyMode设置为多个? 如何通过同一个服务实例为两个调用提供服务? 谢谢!

WCF服务(.NET 4.0)可以有.NET 2.0客户端吗?

场景是这样的: 我有一个工作正常的.NET 4.0客户端 – 服务器应用程序。 我需要创建一个可以访问服务器的UserControl,但它需要在.NET 2.0中创建(因为客户应用程序是.NET 2.0) 它是否存在从2.0客户端访问.NET 4.0 WCF服务的方法? 注意: 它不是Web服务,而是独立的.exe服务器 没有使用身份validation 传输的数据几乎是基本的(带有数组和基本类型的类) 它使用客户端回调,因此协议il net.tcp 如果我仍然可以使用回调,我可以选择更改协议

在WCF中,服务器没有访问客户端的公钥,客户端没有访问服务器的公钥 – 仍然是Web方法操作成功。 为什么?

我在使用消息安全性的X.509服务器证书( .pfx )[未自签名,组织提供]保护的开发服务器上有一个WCF服务。 在我的本地计算机上,客户端应用程序使用消息安全性使用客户端证书( .pfx )[非自签名]文件来使用它。 预期的操作(Web服务方法)成功地运行了所需的结果。 客户服务电话: try { ServiceClient.Service1Client obj = newServiceClient.Service1Client(); Response.Write(obj.Add(1, 1)); } catch (Exception ex) { Response.Write(ex.InnerException.Message); } 题: 根据https://blogs.msdn.microsoft.com/bradleycotier/2011/12/14/mutual-authentication-with-a-iis-hosted-wcf-data-service-installed-in-a-workgroup-environment/其中说: 为了使客户端和服务能够使用证书成功进行通信,WCF客户端应用程序必须能够访问客户端的私钥,并且IIS(接收方)必须能够访问客户端的公钥。 相反,IIS必须能够访问服务私钥,并且客户端必须能够访问服务公钥。 我没有通过MMC或文件在任何一方(客户端或服务器)导入服务器或客户端的任何公共证书.cer文件,那么操作如何成功? 因为它违背了文章中分享的逻辑。 在多客户端方案中,如果我们打算拥有单个客户端.pfx证书,我们如何将其分发给所有客户端? 您的建议很有价值,请分享一些。

WCF服务多端点配置

我有一个WCF服务: https://myservice/service.svc https://myservice/service.svc?wsdl 下面给出了我的WCF应用程序的web.config的相关部分(如果您需要更多,请告诉我): 我希望我的客户能够通过以下链接访问该服务,但链接不起作用:(或者下面的链接可能是我的语法错误,如果是这样,请告诉我) https://myservice/service.svc/ClientA https://myservice/service.svc/ClientB https://myservice/service.svc/ClientC 以下链接工作,但我不认为这是由于我的配置,好像我在最后一个正斜杠后写任何东西它仍然有效…. https://myservice/service.svc?wsdl/ClientA https://myservice/service.svc?wsdl/ClientB https://myservice/service.svc?wsdl/ClientC https://myservice/service.svc?wsdl/asfgvafgfgf … (this works too !!!) 请让我知道如何实现这一目标。 我不想为所有客户创建单独的服务。 如果这样做,我想在所有客户端的端点定义中使用不同的contract =“MyService.IService”,因为服务中公开的每个客户端的方法会有所不同。 我还想问,我能否指定使用哪个连接字符串,具体取决于哪个端点客户端正在访问该服务? 最后:我不想要: https://myservice/service.svc https://myservice/service.svc?wsdl 要访问的链接,我希望客户只使用他们指定的链接… 是可能的,或者我应该为每个客户创建单独的服务……? 谢谢。

一个流中的多个流不会正确传递给客户端

在WCF服务中,我根据这个问题填写Stream,如: result.Stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(result.Stream); foreach (string fileN in zipFiles) { byte[] fileBytes = File.ReadAllBytes(fileN); writer.Write(BitConverter.GetBytes(fileBytes.Length), 0, 4); writer.Write(fileBytes, 0, fileBytes.Length); } writer.Flush(); return result; 在此之前我通过这个返回流,一切都在服务和客户端: result.Stream = new MemoryStream(File.ReadAllBytes(fileN)); Stream是MessageBodyMember但现在更改它以将所有文件保存在一个流中。 和客户端的测试方法: ExportClient export = new ExportClient(“exportEndPoint”); ExportResult_C result = export.Export(source); result.Stream.Position = 0; //result.Stream.SaveToFile(“d:\\kkk.log”); BinaryReader reader = new BinaryReader(result.Stream, […]