Tag: soap client

在Linux机器上运行ac#app时,SOAP身份validation失败

我正在尝试通过ac#app连接到第三方SOAP服务。 在Windows计算机上运行应用程序时,以下代码有效: var ws = new MyWebServiceClient(); ws.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential(“myusername”, “mypassword”, “mydomain”); var response = ws.SomeEndpoint(); Element xmlResult = response.Result.SomeEndpoint; … 但是,如果我从Linux或Mac OS运行相同的代码 ,它将失败: The HTTP request is unauthorized with client authentication scheme ‘Negotiate’. The authentication header received from the server was ‘Negotiate, NTLM’. 我有一个python应用程序,可以在任何操作系统上运行时使用相同的SOAP服务而不会遇到问题,所以问题不在我的Linux发行版/设置中。 有没有人看到.NET核心的类似问题或找到了解决方法? 我发现这个问题报告表明早期版本的.NET核心存在限制/错误,可能导致类似于我所看到的行为,但它声称这些问题在RC2之后得到了解决。 假设问题报告是错误的并且问题仍然存在于.NET核心的Linux / Mac发行版中,是否有人知道我如何获得CredentialCache解决方法,在该文章中建议使用SOAP客户端? 我是.NET的新手,也是.NET soap客户的新手,所以如果这是一个天真的问题我会道歉。 看来,对于非Windows,.NET核心在协商失败后无法尝试NTLM。 我知道,从python应用程序,NTLM使用这个特定的SOAP服务。 […]

无法在ServiceModel客户端配置部分中找到名称为“xxxxx”且合同“yyy”的端点元素

我通过这个命令生成了一个代理 – svcutil.exe / language:cs /out:generatedProxy.cs /config:app.config https://service100.emedny.org:9047/MHService?wsdl 然后将生成的app.config中的元素复制到现有项目的app.config文件中。 当我尝试通过以下方式访问该配置文件中的客户端时 – MHSClient serviceProxy = new MHSClient(“MHSPort”); 它应该引用下面的第二个客户: 但我得到了错误; 无法在ServiceModel客户端配置部分中找到名称为“MHSPort”且收缩“MHS”的端点元素。 这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。 如果我去定义MHSClient,它会将我带到proxy.cs文件和这一行; public partial class MHSClient:System.ServiceModel.ClientBase,MHS 解决了以下问题 – endptAddress = new EndpointAddress(new Uri(“uri”/ xxxx“),EndpointIdentity.CreateDnsIdentity(”xxxxxx“),addressHeaders); MHSClient serviceProxy = new MHSClient(b,endptAddress);

从控制台应用程序记录SOAP消息

我正在尝试将我开发的控制台应用程序和特定的第三方远程SOAP Web服务之间的请求和响应(原始XML SOAP信封)记录到数据库以进行审计,我找不到办法。 理想情况下,我想做的是获取请求 Albireo 和响应 Hello, Albireo. 并将它们保存在数据库中。 到目前为止,我发现网上的每个教程都归结为两种方法,即SoapExtension方法和跟踪方法。 SoapExtension方法 SoapExtension方法基于SOAP Message Modification Using SOAP Extensions指南,在此方法中,您创建一个inheritance自SoapExtension的类并将其挂钩到应用程序的配置中,类的ProcessMessage方法将允许您拦截SOAP消息。 这是从SoapExtensioninheritance的类的示例: namespace Playground.Client { using System; using System.Web.Services.Protocols; public class SoapLogger : SoapExtension { public override object GetInitializer(System.Type serviceType) { throw new NotImplementedException(); } public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute) { throw new NotImplementedException(); } public override […]

IRS-A2A:WS安全标头无效

我一直在使用服务引用(代理客户端)和手动创建SOAP XML 。 我将WSDL文件作为服务引用导入到我的项目中。 我使用这些引用提供的对象来创建填充我的请求。 我的代码库是使用Visual Studio 2013的C#。 我的服务参考解决方案遇到错误: “消息中的WS安全标头无效。请查看位于https://www.irs.gov/for-Tax-Pros/Software-Developers/的”AIR提交组合和参考指南“第5节中概述的传输说明。 信息 – 退货/负担得起 – 护理 – 行动 – 信息 – 退货 – AIR-计划 ,纠正任何问题,然后再试一次。“ 其他人如何通过Web服务成功将安全性传递给IRS? 有关如何使用代理客户端解决我遇到的问题的任何想法? 代理客户端? 更新 我已经放弃了使用WSDL文件作为服务引用的方法,并且手动创建了传输的SOAP请求。

在发送传出请求之前将新的SoapClient绑定到特定的IP地址

假设应用程序所在的机器具有SoapClient(具体来说,我使用的是Microsoft.Web.Service3.Messaging.SoapClient)。 它通过发送传出请求并获得SoapEnvelope作为回报(完善的过程),向远程位置通信没有问题。 上述方案是通过分配给应用程序所在机器的IP。 现在,我需要修改这个过程 – 我们需要再向机器添加2个IP,我需要将传出请求“绑定”到特定IP,而不是默认IP。 因此,在远程位置,它似乎正在接收来自3个不同IP的请求,但实际上都来自同一台机器/应用程序。 如何将传出请求绑定到特定IP? 这就是远程位置通过IP“锁定”到特定帐户的方式,而不是登录(这是我建议的,他们拒绝了)。 他们说我们应该能够做到这一点(绑定到特定的IP),但我不确定如何使用Microsoft的SoapClient对象。 有什么建议?

使用gzip压缩HttpWebRequest

我正在开发一个.NET 4.0控制台应用程序作为SOAP Web Service客户端,它将数据(POST)发送到第三方。 我无法控制服务器端的Web服务。 第三方确实提供了WSDL’s使用,我能够导入它们并合理地使用它们。 但是,需要使用gzip压缩请求消息,并且我无法终身使用代理服务来弄清楚如何使用gzip 。 这个关于SO的主题让我相信,如果不能控制客户端和服务器代码,就无法压缩请求。 作为这一发现的结果,我在我的应用程序中编写了代码,以在XDocument对象中手动创建SOAP XML ; 然后,填充我之前编写的客户端应用程序要使用的WSDL代理类对象中的值。 此客户端的第一个要求是通过gzip发送压缩的消息。 经过一些研究,我看到答案很简单,就像在请求头中添加HttpRequestHeader.AcceptEncoding, “gzip, deflate”一样简单。 不幸的是,这样做似乎不起作用。 目前,我检索的证书不是真正的证书。 在部署到测试环境进行实际的服务测试之前,我试图使代码尽可能健全。 有没有办法通过代理调用( wsdl )压缩请求? 为了正确压缩HttpWebRequest我是否缺少一些东西? 可能会出现其他错误,导致返回错误消息? 如果请求本身没问题,我希望有关身份validation的其他消息无效 。 有没有办法通过app.config进行压缩? 下一组要求我对如何处理/做什么感到困惑。 假设我已经将请求的ContentType设置为,我如何(以及什么)添加content-transfer-encoding片段以添加请求? 如果ContentType不正确,我该如何添加此信息? 具有MTOM编码附件的SOAP Evenlope的内容类型必须是“application / xop + xml”,content-transfer-encoding必须是8位。 我已经完成了下面代码的几次迭代,但是,我相信相关的代码片段是最简单的代码。 如果有其他信息有用,请告诉我。 创建HttpWebRequest的方法: private static HttpWebRequest CreateWebRequest(SoapAction action) { string url = GetUrlAddress(action); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Headers.Add(HttpRequestHeader.AcceptEncoding, […]

我如何在c#中更改soap xml web服务?

我使用了webservice preferences cs代码。 我有soap xml web服务请求。 20180708 20180708 0 但我想改变这个,我怎么做c#? 谢谢。 20180708 20180708 0

WCF – 找不到X509SecurityToken的令牌validation器

我正在尝试调用第三方Web服务,我已经到了能够在服务跟踪查看器中实际看到服务器响应的地步。 但是,我不断从.NET获得exception: Cannot find a token authenticator for the ‘System.IdentityModel.Tokens.X509SecurityToken’ token type. Tokens of that type cannot be accepted according to current security settings. 我的app.config看起来像这样(用占位符替换了Thumbprints): <defaultCertificate findValue="” x509FindType=”FindByThumbprint” storeLocation=”CurrentUser” storeName=”TrustedPeople”/> <clientCertificate findValue="” x509FindType=”FindByThumbprint”/> 现在,我已经尝试了有关此exception的所有内容。 将authenticationMode设置为MutualCertificate :服务器响应404 设置allowSerializedSigningTokenOnReply :无变化 来自服务器的响应包含: 我可以在某处添加x508SecurityToken处理程序,否则忽略此错误(这样做是否安全) exception堆栈跟踪: Server stack trace: at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver, IList`1 allowedTokenAuthenticators, SecurityTokenAuthenticator& usedTokenAuthenticator) at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlDictionaryReader […]

如何将HTTP标头添加到SOAP客户端

如果有可能将HTTP标头添加到soap客户端Web服务调用,有人可以回答我。 浏览互联网后,我发现的唯一的细节是如何添加SOAP标头。 代码如下所示: var client =new MyServiceSoapClient(); //client.AddHttpHeader(“myCustomHeader”,”myValue”);//There’s no such method, it’s just for clearness var res = await client.MyMethod(); 更新: The request should look like this POST https://service.com/Service.asmx HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: “http://www.host.com/schemas/Authentication.xsd/Action” Content-Length: 351 MyHeader: “myValue” Expect: 100-continue Accept-Encoding: gzip, deflate Connection: Keep-Alive BodyGoesHere 信封中的标题属性应为空

IRS-A2A BulkRequestTransmitter消息未正确格式化和/或无法解释

尝试通过BulkRequestTransmitter Web服务提交时,我收到以下错误。 对于此消息,组合指南不太有用,当我将SOAP XML与Composition Guide中的SOAP进行比较时,它们似乎是一对一的。 我希望另一组眼睛能够看到问题所在。 消息格式不正确和/或无法解释。 请查看位于https://www.irs.gov/for-Tax-Pros/Software-Developers/Information-Returns/Affordable-Care-Act-Information的“AIR提交组合和参考指南”第3节中概述的XML标准。 -Return-AIR-Program ,更正任何问题,然后重试。 我试过的: 尝试在SOAP信封中提交(和不提供)空格。 尝试使用XML格式的表单数据XML进行提交。 尝试使用base64string格式的表单数据提交(因为此提交是)。 在签名元素中添加了ds前缀。 使用此SOpost以便为Signature元素添加前缀。 添加了“漂亮打印”格式的表格数据,并根据更新的作文指南(v4.2)添加。 复制组合指南第10.3节中概述的BulkTransmitterService请求的MIME格式。 创建了两个解决方案:1。)手动创建SOAP请求所需的XML并通过HttpWebRequest对象发送; 2.)通过导入到项目的WSDL作为Service Reference发送提交请求,使用自定义编码器进行GZip and Mtom Encoding并手动创建SOAP状态请求所需的XML(通过HttpWebRequest发送)。 更新#1 根据一些新增内容更新了请求。 在签名元素中添加了ds前缀。 添加了“漂亮打印”格式的表格数据,并根据更新的作文指南(v4.2:第5.4.2节)添加。 更新#2 我开始在Visual Studio的新实例中手动创建SOAP .xml文件,根据需要导入模式引用。 我在任何类型的应用程序创建之外这样做 。 通过这样做,我能够在我通过我的应用程序创建的SOAP找到一些额外的错误(感谢intellisense!) 。 我发现的错误是在Manifest XML中,因为它们不符合IRS模式。 我将在接下来的24小时内查看这些内容并进行相应更新。 urn:MailingAddressGrp应该有一个urn:USAddressGrp或urn:ForeignAddressGrp 。 那个孩子应该包含适当的地址元素。 我的代码目前缺少urn:MailingAddressGrp的直接子代urn:MailingAddressGrp 。 Form1094C_Request_[TCC]_yyyyMMddThhmmssfffZ.xml urn1:DocumentSystemFileNm的值不正确。 我还不完全确定它应该是什么。 urn1:BulkExchangeFile元素存在与xop:Include元素相关的问题。 架构需要base64Binary类型。 更新#2.5 更新了我的XML生成过程以包含USAddressGrp元素。 发现我在毫秒内有一个额外的字符(四个而不是三个)。 一旦我更正了这一点,同时从文件名的开头删除字符串“Form”, urn1:DocumentSystemFileNm的值就能够成功validation模式。 更新#3 […]