当我使用客户端web服务时,我会收到以下错误。
错误:内容类型text/xml;响应消息的charset=utf-8不匹配绑定的内容类型(application/soap+msbin1 1+gzip)。如果使用自定义编码器,请确保正确地实现了IsContentTypeSupported方法。 响应的前807字节是: ‘soapenv:客户端请求消息必须使用HTTP压缩(RFC 1952-GZIP)发送。请查看位于https://www.irs.gov/for-Tax-Pros/Software-Developers/Information-Returns/Affordable-Care-Act-Information-Return-AIR-Program的空气提交组成和参考指南第5节中概述的传输说明,纠正任何问题,然后再试一次。TPE1112 '.==========================Error: System.Net.WebException:远程服务器返回一个错误:(500)内部服务器错误。在System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan超时时在System.Net.HttpWebRequest.GetResponse() )
我知道有很多关于这个错误的文章,但是我无法得到解决方案或提示,如何解决这个问题?
基本上,客户端提供了WSDL文件,我将其作为“服务引用”添加到控制台应用程序中。
这是我的配置文件
<bindings>
<customBinding>
<binding name="BulkRequestTransmitterBinding" >
<binaryMessageEncoding compressionFormat="GZip" />
<httpsTransport/>
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="MYENDPOINTURL"
binding="customBinding"
bindingConfiguration="BulkRequestTransmitterBinding"
contract="CONTRACTNAME"
name="BulkRequestTransmitterPort" />
</client>发布于 2016-02-11 16:26:09
要开始工作,您需要下载此示例编码器来自Microsoft。
设置它并将其作为一个项目添加到解决方案中。之后你需要做些调整。
这样,您的代码应该可以成功地传输到国税局。
发布于 2016-02-11 19:46:14
我和你们处于同一条船上,对于不能简单地发表评论,我和你们处于同一条船上。关于向国税局传送的很好的解释。似乎有几个人在这个网站上为我们各自的实体做同样的工作。
但是,我遇到了以下错误,在确定解决该错误的下一步时遇到了问题。当将BulkRequestTransmitterPortTypeClient实例化到新对象时,我将收到此错误,以便我可以将Content-Encoding添加到标头,并将请求发送到IRS。
'System.Configuration.ConfigurationErrorsException‘类型的未处理异常发生在System.Configuration.dll中 附加信息:无法加载为扩展“GZipEncoder.GzipMessageEncodingElement”注册的“GZipEncoder,gzipMessageEncoding”类型。
gzipMessageEncoding app.config条目是带下划线的,但是从我读过的其他文章来看,这是可以的。<extensions><bindingElementExtensions>中有适当的<metadata><policyImporters><extension>和app.config条目。答案-编辑
为了克服我遇到的错误,我找到了这个职位,它引导我使用下面的代码输出我需要添加到app.config中的类型字符串。我将这些命令输出的字符串复制到app.config中,这使我通过了上面的错误。
Console.WriteLine(typeof(GZipEncoder.GZipMessageEncodingElement).AssemblyQualifiedName);
Console.WriteLine(typeof(GZipEncoder.GZipMessageEncodingBindingElementImporter).AssemblyQualifiedName);app.config条目
<system.serviceModel>
<extensions>
<bindingElementExtensions>
<add name="gzipMessageEncoding" type="GZipEncoder.GZipMessageEncodingElement, GZipMessageEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bindingElementExtensions>
</extensions>
<client>
<metadata>
<policyImporters>
<extension type="GZipEncoder.GZipMessageEncodingBindingElementImporter, GZipMessageEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</policyImporters>
</metadata>
</client>
<bindings>
<customBinding>
<binding name="BulkRequestTransmitterBinding">
<gzipMessageEncoding innerMessageEncoding="textMessageEncoding" />
<httpsTransport />
</binding>
</customBinding>
</bindings>
</system.serviceModel>我仍然收到关于gzipMessageEncoding元素的模式验证警告,但是我看到的很多东西都说过应该是这样的。所以现在,我要忽略它。
请求提交
// Called from the main method.
// 'request' is the BulkRequestTransmitterRequest object where the BusinessHeader,
// Manifest, Security, and FormData are set.
ACABulkRequestTransmitterResponseType response = SubmitRequest(request).ACABulkRequestTransmitterResponse;
private static BulkRequestTransmitterResponse SubmitRequest(BulkRequestTransmitterRequest request)
{
// Create a new instance of the Web Service client object.
BulkRequestTransmitterPortTypeClient client = new BulkRequestTransmitterPortTypeClient("BulkRequestTransmitterPort");
using (new OperationContextScope(client.InnerChannel))
{
// Add a HTTP Header to an outgoing requqest.
HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
requestMessage.Headers["Content-Encoding"] = "gzip";
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;
return client.BulkRequestTransmitter(request);
}
}接下来是我在TransmitterRequest和StatusRequest上接收到的下一个错误
附加信息:消息中的WS安全标头无效。
https://stackoverflow.com/questions/35125290
复制相似问题