C# 无法验证XML,因为Base64编码字符串太大
我在Visual Studio 2017中使用C#创建了一个SOAP服务,该服务使用.NET 4.0 framework编译 我在调试时将服务部署到IIS Express,并部署到IIS管理器站点。 在这两种服务上,当我发布一个包含810万个字符的(大)Base64编码字符串(PDF文件)的XML时,我遇到了以下错误: System.Web.Services.Protocols.SoapException:C# 无法验证XML,因为Base64编码字符串太大,c#,xml,visual-studio,soap,base64,C#,Xml,Visual Studio,Soap,Base64,我在Visual Studio 2017中使用C#创建了一个SOAP服务,该服务使用.NET 4.0 framework编译 我在调试时将服务部署到IIS Express,并部署到IIS管理器站点。 在这两种服务上,当我发布一个包含810万个字符的(大)Base64编码字符串(PDF文件)的XML时,我遇到了以下错误: System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 对象引用未设置为对象的实例。 在System.Web.Servic
服务器无法处理请求。
对象引用未设置为对象的实例。
在System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement()中 位于System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouterRequest()中 在System.Web.Services.Protocols.SoapServerProtocol.Initialize()上 在System.Web.Services.protocol.ServerProtocolFactory.Create(类型类型、HttpContext上下文、HttpRequest请求、HttpResponse响应、布尔和中止处理) 我已经尝试在
web.config
文件和applicationhost.config
文件中将“允许的最大内容长度”增加到大约3GB。这没有任何影响,但我也没想到会有任何结果,因为错误实际上并没有说明内容太大的问题
当我用另一个小得多的Base64字符串发布同一个XML时,它确实从XML创建了一个正确的对象,没有任何问题
我还检查了Base64字符串在多个联机转换器中是否正确。他们的尺寸也有很多问题,但我可以确认字符串
奇怪的是,调试时它甚至没有进入WebService类
顺便说一下,代码中的字段是字节数组,在XSD中定义为base64Binary
我无法共享Base64字符串本身,因为它在本例中包含敏感信息,而且还因为它的大小
我如何解决这个问题
更新
还尝试设置“用户为网站和项目使用64位版本的IIS Express”,但这对eather没有帮助。问题在于最大请求长度。XML的大小大于IIS中设置的默认限制。这导致切割XML,从而导致XML文件无效/不完整 可以直接在web.config文件中更改此配置:
<system.web>
<httpRuntime maxRequestLength="2147483647" />
</system.web>
或在IIS管理器中:
问题是最大请求长度。XML的大小大于IIS中设置的默认限制。这导致切割XML,从而导致XML文件无效/不完整 可以直接在web.config文件中更改此配置:
<system.web>
<httpRuntime maxRequestLength="2147483647" />
</system.web>
或在IIS管理器中:
请显示相关的代码。@itsme86没有相关的代码,因为正如我在调试时所说的,它甚至没有进入WebService类,并且使用较小的Base64字符串,一切正常。如果没有代码,您能否至少将您的问题共享完整的
ToString()
异常的输出,包括异常类型、消息、回溯和内部异常(如果有)?在使用反序列化之前,必须首先解码基64字符串。编写自己的反序列化代码。大小应该是您自己代码中的一个因素。请参阅Wiki:缺少a我只能猜测这可能会有所帮助:。请显示相关代码。@itsme86没有相关代码,因为正如我在调试时所说,它甚至没有进入WebService类,并且使用较小的Base64字符串,一切正常。如果没有代码,您是否可以至少回答您的问题,以共享异常的完整ToString()
输出,包括异常类型、消息、回溯和内部异常(如果有)?在使用反序列化之前,您必须首先解码base 64字符串。编写自己的反序列化代码。大小应该是您自己代码中的一个因素。参见Wiki:a我只能猜测这可能会有所帮助:。