Tag: #wcf

Web服务没有添加引用?

我有3个Web服务添加到类库中的服务引用。(这是一个API使用的示例项目)我需要将它们移动到我的项目中但由于安全问题我无法添加服务引用(安全问题我意味着服务只响应一个IP地址,这是我们客户服务器的IP地址。)是否有办法为该particaluar Web服务生成类似于使用“Ildasm.exe”的类?

WCF中OperationTimeout和SendTimeout之间的区别

经过相当多的搜索,我找不到这个问题的答案。 OperationTimeout和SendTimeout之间的确切区别是什么? 我读取OperationTimeout是SendTimeout的子集, SendTimeout包括在通道中写入消息。 如果您提供更多详细信息,那就太棒了。 我的第二个问题是我有一个客户端调用服务,我只想在发送到服务器的请求之后不久和服务器收到回复之后设置超时。 如何设置此超时?

将ASMX转换为WCF Web服务需要多少工作量?

我有2个Web服务,共有大约6个Web方法,大多数代码都是以任何方式放在程序集中,而web服务asmx实际上只是调用这些程序集方法并返回它们的返回类型。 将Web服务从ASMX转换为WCF需要付出多少努力? 我几乎在这个阶段控制着唯一的 – 连接到Web服务的非基于Web的客户端,所以这不是一个真正的问题,产品在预启动。

Delphi SOAP Envelope和WCF

我正在开发一个提供soap接口的系统。 其中一个将使用该接口的系统在Delphi 7中编码.Web服务是使用WCF,基本的http绑定,SOAP 1.1开发的。 如果我使用SOAP UI(JAVA),该服务正常工作。 但delphi似乎在这里做了特别的事情;) 这是SOAP UI中消息的样子: ? 我不是delphi开发人员,但我开发了一个简单的测试客户端,看看出了什么问题。 这就是Delphi作为SOAP信封发送的内容。 253 WCF抛出一个德语错误…;) Es wurde das Endelement“Body”aus命名空间“ http://schemas.xmlsoap.org/soap/envelope/”erwartet 。 Gefunden wurde“Element”NS2:GetCustomerRequest“aus Namespace” http://services.xxx.de/xxx “”。 Zeile 1,职位599。 意味着什么 身体是预期的。 但是找到了元素“NS2:GetCustomerReques”。 现在我的问题是:我可以以某种方式改变Delphi创建信封的方式吗? 或者是使WCF使用这种消息格式的方法? 任何帮助是极大的赞赏!

WCF性能,延迟和可伸缩性

我正在尝试将F#中的简单异步TCP服务器移植到C#4。服务器接收连接,读取单个请求并在关闭连接之前流回一系列响应。 C#4中的异步看起来很乏味且容易出错,所以我想我会尝试使用WCF。 该服务器不太可能在野外看到1,000个同时发出的请求,因此我认为吞吐量和延迟都很重要。 我在C#中编写了一个最小的双工WCF Web服务和控制台客户端。 虽然我使用的是WCF而不是原始套接字,但这已经是175行代码,而原始代码只有80行。 但我更关注性能和可扩展性: WCF的延迟是154倍。 WCF的吞吐量低54倍。 TCP可以轻松处理1,000个并发连接,但WCF仅在20个时间内阻塞。 首先,我正在使用所有内容的默认设置,所以我想知道是否有任何我可以调整以改善这些性能数据? 其次,我想知道是否有人正在使用WCF进行此类事情,或者它是否是错误的工具? 这是我在C#中的WCF服务器: IService1.cs [DataContract] public class Stock { [DataMember] public DateTime FirstDealDate { get; set; } [DataMember] public DateTime LastDealDate { get; set; } [DataMember] public DateTime StartDate { get; set; } [DataMember] public DateTime EndDate { get; set; } [DataMember] public decimal Open […]

WCF错误 – 已超出传入邮件的最大邮件大小配额(65536)

我的设置: IIS客户端托管的ASP.NET客户端 控制台应用程序中托管的WCF服务 在管理员模式下运行Visual Studio.NET 2012 我试图从WCF服务返回2个List对象。 当我只返回1个List对象时,我的设置工作很精细。 但是当我返回2个List对象时,我收到错误: 已超出传入邮件的最大邮件大小限额(65536)。 要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性。 我知道这个问题在本网站和其他网站上也被多次询问过。 我已尝试使用CONFIG FILE的各种组合在互联网上发布的几乎所有内容,但这对我来说仍然没有用。 客户端配置: 服务器配置:

使用从WCF服务到Java Webservice的X.509证书对SOAP消息进行签名

这是我在网上的第一个问题。 希望它有意义。 我在网上看到了几个与此问题相关的博客,我尝试了一些没有成功的想法。 这是我的情况: 我有一个Web应用程序调用WCF Web服务,然后调用Java Web服务。 它们都在不同的服务器上。 WCF Web服务与java Web服务之间的调用未通过https,因为证书足以识别调用者(因此消息安全性)。 Java Web服务(黑盒子) Java Web服务需要收到已签名的消息,并按以下方式工作: 在处理每个请求之前,处理程序拦截所有传入的消息并执行以下validation规则: 1.邮件是否包含安全标头 2.邮件是否包含正确的安全标头ID 3.邮件是否已正确签名 4.邮件是否包含KeyInfo x.509证书 5.证书是否来自可信CA-配置 6.证书是否有效(未过期,已撤销) 7.证书是否包含正确的策略OID 确认所有这些步骤后,可以处理该消息,如果任何步骤失败,则将返回soap消息exception。 SOAP安全标头应根据xxx … w3.org/TR/SOAP-dsig/数字签名规范进行validation。 最完整的描述可以在这里找到xxx … ibm.com/developerworks/webservices/library/ws-security.html这篇IBM文章列出了每个WS-Security标头的详细信息,另外还提供了一个示例签名的SOAP消息。 签署SOAP消息时,还必须将x.509证书添加到消息KeyInfo中,这是证书validation所必需的。 SOAP请求应该是这样的: soe1PnaGXVGrsauC61JSHD+uqGw= Y9SRPQ9TcDu+GazO3LFwodEdhaA= jBX/8XkY2aCte7qgXEp1sbNWmQcK/90iVL58sAvwYAEcBABGzOk2agxR0HvWrNa6ixkocAQ205lggwOxnxZJvoVozVYAAjcLtayPBOUYrnSEBFrwKWP/vxgvUDRIdXeIuw5GLY87NrTQMm1Ehf/HvMX9hTBJn4Nm8RdDiUmPcIo= MIIEbZCCA1WgAwIBAgIES1XpMjANBgkqhkiG9w0BAQUFADBYMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFzAVBgoJkiaJk/IsZAEZFgdlbnRydXN0MRIwEAYDVQQDEwllbnRydXN0U00xEjAQBgNVBAMTCWVudHJ1c3RDQTAeFw0xMDA0MjIxMDQ4MDBaFw0xMzA0MjIxMTE4MDBaMGoxFTATBgoJkiaJk/IsZAEZFgVsb2NhbDEXMBUGCgmSJomT8ixkARkWB2VudHJ1c3QxEjAQBgNVBAMTCWVudHJ1c3RTTTESMBAGA1UEAxMJZW50cnVzdENBMRAwDgYDVQQDEwdSYnMgUmJzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMf88L2JjLPG1hNmTA/KBiC53WVwS2WU9Jh3lC1Rob6RMzOojomZ/dNrvSRB6nzWeXJpZXwik4XFrsAq24By2SZpLTO4p8Vcq71mTAfDu33cnO49Au2pwNvcMn5qIKBk1Xx+oVb4fzK9ncTRu7bW46HsIYth+qkGhbI2JEHwr/zwIDAQABo4IBrzCCAaswCwYDVR0PBAQDAgeAMCsGA1UdEAQkMCKADzIwMTAwNDIyMTA0ODAwWoEPMjAxMjA1MjgxNTE4MDBaMCMGA1UdIAQcMBowCwYJYIZIAYb6awoEMAsGCSqGSIb2fQdLAzAbBgNVHQkEFDASMBAGCSqGSIb2fQdEHTEDAgEBMIHGBgNVHR8Egb4wgbswb6BtoGukaTBnMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFzAVBgoJkiaJk/IsZAEZFgdlbnRydXN0MRIwEAYDVQQDEwllbnRydXN0U00xEjAQBgNVBAMTCWVudHJ1c3RDQTENMAsGA1UEAxMEQ1JMMTBIoEagRIZCZmlsZTovLy8vTVNJREhVLTQ0NUE0RkVFL0NSTC9lbnRydXN0Y2FfZW50cnVzdHNtX2xvY2FsX2NybGZpbGUuY3JsMB8GA1UdIwQYMBaAFBvSL6cPz8L5shubV58yf0pczKzuMB0GA1UdDgQWBBT1/j6OSS8FTjwqluvew16sv7h+VzAJBgNVHRMEAjAAMBkGCSqGSIb2fQdBAAQMMAobBFY4LjADAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQBXxRIA4HUvGSw4L+4uaR51pY4ISjUQWo2Fh7FYBMt29NsKCTdur1OWVVdndt1yjXP4yWXxoAhHtvZL+XNALUFlR2HAWiXuL1nRcxHkB98N5gPqQzW/lJk9cLtL4hVp28EiEpgmKT3I3NP2Pdb2G5MMOdvQ/GFb2y6OwblR8ViPQ8B2aHWzXMrH+0qadPAuBhXyAohwb+mMuYT/ms6xpGi1NMYuYMf6XONz9GkZgnGnMwa+9CCQws1HNz8WYHtmFIxLsVuEWc/0a1vg4IYX1Ds/ttyhJGTVXOSJSkBz8kRyj1pNBDdc1KeG8M++O8m8VgRTJvYaPc7NMiclISukGpea 0061020051 WCF Web服务 我有一个服务器证书(来自可靠CA的p7b格式),我安装在我的WCF Web服务工作站(dev)使用mmc Certificate Snap-in(目前cert在受信任的发布者中)。 我不认为我需要在Java服务器上使用另一个证书,因为响应应该是明确的(既没有签名也没有加密)。 我对这个证书仍然有点困惑 – 一般都是证书 – 因为它似乎只持有一个公钥。 这是我的测试项目的app.config: <!– –> 当我运行一个简单的测试时: WebAS […]

WCF是否支持SOAP 1.1的WS-Security?

我需要调用一些需要WS-Security的第三Web服务。 我使用以下配置创建了一个WCF端点: 问题是第三方服务器抛出以下exception: 收到协议’_http://schemas.xmlsoap.org/wsdl/soap12/’,必需的协议’_http://schemas.xmlsoap.org/wsdl/soap/’。 据我所知,使用wsHttpBinding将导致WCF发送SOAP 1.2请求,而使用basicHttpBinding将导致SOAP 1.1请求。 由于WS-Security部分是必需的,据我所知,我必须使用wsHttpBinding。 我的问题是如何强制SOAP 1.1请求? 我有什么选择?

为什么我的C#客户端,POST到我的WCF REST服务,返回(400)错误请求?

我正在尝试向我写的一个简单的WCF服务发送POST请求,但我一直收到400 Bad Request。 我正在尝试将JSON数据发送到服务。 谁能发现我做错了什么? 🙂 这是我的服务界面: public interface Itestservice { [OperationContract] [WebInvoke( Method = “POST”, UriTemplate = “/create”, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] String Create(TestData testData); } 实施: public class testservice: Itestservice { public String Create(TestData testData) { return “Hello, your test data is ” + testData.SomeData; } } DataContract: [DataContract] public class […]

在WCF服务中传递接口?

我正在尝试使用WCF服务,并且遇到了传递接口的问题。 这有效: [ServiceContract] public interface IHomeService { [OperationContract] string GetString(); } 但这不是: [ServiceContract] public interface IHomeService { [OperationContract] IDevice GetInterface(); } 当我尝试编译客户端时,它在GetInterface方法上失败。 我得到一个exception,说它无法将Object转换为IDevice。 在客户端上,IHomeService类正确地使用字符串实现GetString,因为它是返回类型,但GetInterface具有返回类型的对象。 为什么不是IDevice?