Tag: #wcf

客户端请求中的SAML令牌后需要签名

我有一个序列化的SOAP请求消息,其中包含一个针对供应商服务的SAML令牌持有者。 我想在C#中创建一个演示程序来产生类似的请求。 为此,我想编写一个创建自己的SAML令牌的客户端。 我已经从自签名证书中成功创建了SAML2令牌,并且我能够使用ChannelFactoryOperations.CreateChannelWithIssuedToken方法(.Net 4.0)将其与请求相关联。 一切都运行良好,但我无法弄清楚在断言后放置签名所需的C#,并使用SAML令牌作为签名KeyIdentifier来签署时间戳。 我甚至不确定我在问什么,但似乎签名本身之后的签名应该是简单的部分。 但是,我在请求中获得SAML的唯一方法是声明它类型为BearerKey。 但BearerKey似乎在断言后省略了签名。 我似乎想要SymmetricKey,但令牌“没有键”。 如何在断言后出现这样的签名元素? 这里URI =“#_ 1”指的是上面的WS-Security时间戳(未示出)。

使用新的亚马逊服务搜索亚马逊示例

我找不到新的亚马逊服务的实例(或至少在过去几年内)。 最接近的工作示例只是返回一个null项,无论我在标题中放置什么。 代码是: // Amazon ProductAdvertisingAPI client AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = “Books”; request.Title = “C#”; request.Condition = Condition.All; //request.ResponseGroup = new string[] { “Small” }; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings[“accessKeyId”]; // send […]

让svcutil从C#文件中获取文档?

伙计们, 我正在创建一个新的WCF服务,并从我的服务界面开始。 看起来像: public interface ISomethingService { /// /// some description /// /// 2.13.0 /// 2009 by myself /// Marc Scheuner /// The request object [OperationContract] SomethingResponse GetList(SomethingRequest request); } 现在,我还在另一个描述SomethingRequest和SomethingResponse消息的文件中创建了一些数据协定。 我编译了我的项目并启动了svcutil.exe以从DLL中提取元数据(WSDL和XSD) – 但我似乎无法弄清楚是否有办法将我的所有注释和解释都放到WSDL / XSD中/节点。 我是否对另一个不起眼的svcutil.exe参数视而不见,或者真的没有办法在元数据中自动生成这个文档? 编辑:好的,根据Marc Gravell的回答,注释和文档字符串不在编译的DLL中,也不在MEX元数据交换协议上可用(可惜!)。 那么:如果您需要向第三方提供访问您服务所需的信息,您如何记录您的WCF服务? 是否存在“NService”或“Sandcastle for WCF”工具,它将扫描我的WCF服务库并从源代码构建WSDL和XSD,包括注释? 似乎无法找到很多工具和方法来做到这一点 – 令我惊讶的是,老实说…. 渣

我们如何为WebHttpBinding WCF REST服务实现会话管理?

我一直在使用webHttpBinding会话模式开发WCF REST服务。但是我总是得到这个错误“ 合同需要会话,但绑定’WebHttpBinding’不支持它或者没有正确配置以支持它。 ”可以任何一个人告诉我这是什么原因?

关于如何组织后台队列操作的文章

现在我正在思考如何组织系统架构。 该系统将由网站组成,用户可以在其中上传一些文档然后将其处理回来,并且一些后台守护程序具有应该处理提供的文档的任务队列。 我的问题是:我应该实现我上面告诉你的守护进程,作为只有命名管道的WCF服务(不需要netowork访问这个服务)? 有关于此的任何建议/提示/建议吗? 用户可以提供的数据只是一堆XML文件。 ASP.NET网站将公开获取此XML文件的function,然后以某种方式应该能够将它们传递给守护程序。 你能否指点我关于那个话题的一些文章。 提前致谢! 编辑后 几个小时后发现人们在这里建议的MSMQ,我对该技术的想法更多的是分布式架构(处理节点位于不同的机器上,并且通过网络在不同的计算机之间交换消息)。 目前不需要分离到独立的机器。 只有机器上有ASP.NET网站和一些处理程序。 是否有必要使用MSMQ? 编辑#2 由于我在这里使用.NET Framework,请建议仅提供与.NET兼容的内容。 这里真的没有任何选择。

WCF IErrorHandler扩展未返回指定的Fault

希望有一些WCF向导可以在这里发现我的错误。 我试图通过RESTful JSON WCF服务上基于IErrorHandler的behaviorExtension设置全局error handling程序。 该方法装饰如下: [OperationContract] [WebGet(UriTemplate = “screens/info”, ResponseFormat = WebMessageFormat.Json)] IErrorHandler实现是: public class ErrorHandler : IErrorHandler { public void ProvideFault(Exception error, MessageVersion version, ref Message fault) { var error = new JsonError { Message = error.Message, FaultCode = -1, StackTrace = error.StackTrace }; fault = Message.CreateMessage(version, “”, ideaScreeningError, new DataContractJsonSerializer( ideaScreeningError.GetType())); // […]

使用WCF客户端+ cookie进行Web服务调用

在WCF Service.实现Basic security Authentication WCF Service. 管理从Web服务获取.ASPXCookie 。 但是,如何将收到的cookie传递回下一个请求? var authClient = new MovieDbClient(); using (new OperationContextScope(authClient.InnerChannel)) { isValid = authClient.Login(“userName”, “passWord*”); if (isValid) { var response = (HttpResponseMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpResponseMessageProperty.Name]; sharedCookie = response.Headers[“Set-Cookie”]; } } 我试图打印SharedCookie并且成功了。 它看起来像, “.ASPXAUTH=E499CA76EAC178A96BE5CA1E314CC90E0A6F9B95AD221EF5AD7D43598E701DC034D40904DBB8ECFBFB3EA21F2597D3C8DAB9B19A0491FD5858E9F0A4B6DC6E6A980FBB4CCADE191855A029CF8236C6890BEE28665C236992632807D1021AA138; expires=Tue, 07-Jan-2014 06:22:22 GMT; path=/; HttpOnly” 问题是how do I pass this cookie information in my next request using […]

C#WCF – 客户端/服务器 – System.OutOfMemoryexception

问题。 使用Net TCP绑定的C#WCF客户端/服务器应用程序(发布者/订阅者模式)。 客户端不断崩溃,出现OutOfMemoryException 。 当我与客户端一起运行任务管理器时,我可以看到内存使用列增加,直到应用程序崩溃。 意图是客户端的多个实例在不同的计算机上运行。 脚本 我有一个客户端/服务器应用程序。 发布者/订阅者设计模式。 在服务器端,有6个组成缓存的字典,每个字典都包含一个自定义对象作为值。 每组字典值每5秒更新一次,作为while循环的一部分。 在5秒循环结束时,将6个字典添加到datacontract对象,每个字典作为不同的数据成员。 然后,数据合同对象通过网络发送到客户端,其中还有6个字典。 然后我循环遍历每个数据协定字典,并根据值是否已存在添加或更新其客户端等效的内容。 摘要 6个字典服务器端。 数据合同中的6个可序列化词典。 6个可绑定的词典客户端。 WCF使用Net TCP Binding通过线路传输数据。 规格 C#.Net 3.5 客户端使用一个DevExpress表单和9个DX网格视图和选项卡控件。 大多数自定义对象都包含“子资产”字典。 – 我已经为这个属性使用了一个可绑定的字典,当你有几百个对象时,我想这会产生开销(虽然我不认为使用可序列化的字典会产生很大的不同,因为它们都包含相同的序列化代码) 。 双方的绑定在开始时以编程方式创建一次,并包含相同的设置(参见下文)。 NetTcpBinding netTcpBinding = new NetTcpBinding(SecurityMode.None); EndpointAddress endpointAddress = new EndpointAddress(EndpoindAddress); InstanceContext context = new InstanceContext(callbackinstance); netTcpBinding.MaxConnections = 5; netTcpBinding.MaxBufferSize = 2147483647; netTcpBinding.MaxBufferPoolSize = 2147483647; […]

C#WCF:WCF服务在发送项目数组时返回(404)错误请求

我试图将一个大约50个元素的数组发送到WCF服务方法,但我总是收到(404) Bad Request错误。 我认为它与消息大小或类似的东西有关,因为如果我发送一个空数组它可以工作。 我做了一些研究,并在WCF的web.config中添加了一些东西,但我仍然无法让它工作。 任何人都可以提供一些额外的信息,我可以如何增加我可以发送的邮件的大小 ? [更新]解决方案: 解

将Windows凭据传递给远程https WCF服务

我需要一些帮助,我正在尝试将Windows凭据传递给WCF服务。 在IIS中,仅为这些服务启用Windows身份validation,并通过https运行。 服务器端配置是: 在客户端: 我试图以这种方式使用服务: Client = new MyServiceClient(); BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; binding.MaxReceivedMessageSize = int.MaxValue; binding.MaxBufferPoolSize = long.MaxValue; binding.MaxBufferSize = int.MaxValue; EndpointAddress ep = new EndpointAddress(“https://myserver.net:4343/MyService.svc”); Client = new COMINTSServiceClient(binding, ep); Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Identification; Client.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; Client.Open(); Array[] obj = Client.RandomMethod(); 此代码对我不起作用: Client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Identification; Client.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; 在服务中,当使用ServiceSecurityContext.Current.WindowsIdentity.Name询问正在调用服务的用户时,总是得到: […]