Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法验证XML,因为Base64编码字符串太大_C#_Xml_Visual Studio_Soap_Base64 - Fatal编程技术网

C# 无法验证XML,因为Base64编码字符串太大

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

我在Visual Studio 2017中使用C#创建了一个SOAP服务,该服务使用.NET 4.0 framework编译

我在调试时将服务部署到IIS Express,并部署到IIS管理器站点。 在这两种服务上,当我发布一个包含810万个字符的(大)Base64编码字符串(PDF文件)的XML时,我遇到了以下错误:

System.Web.Services.Protocols.SoapException:
服务器无法处理请求。
对象引用未设置为对象的实例。
在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管理器中:

  • 打开站点
  • 打开配置编辑器
  • 在本节中,转到system.web/httpRuntime
  • 更改maxRequestLength属性

  • 问题是最大请求长度。XML的大小大于IIS中设置的默认限制。这导致切割XML,从而导致XML文件无效/不完整

    可以直接在web.config文件中更改此配置:

    <system.web>        
       <httpRuntime maxRequestLength="2147483647" />
    </system.web>
    
    
    
    或在IIS管理器中:

  • 打开站点
  • 打开配置编辑器
  • 在本节中,转到system.web/httpRuntime
  • 更改maxRequestLength属性

  • 请显示相关的代码。@itsme86没有相关的代码,因为正如我在调试时所说的,它甚至没有进入WebService类,并且使用较小的Base64字符串,一切正常。如果没有代码,您能否至少将您的问题共享完整的
    ToString()
    异常的输出,包括异常类型、消息、回溯和内部异常(如果有)?在使用反序列化之前,必须首先解码基64字符串。编写自己的反序列化代码。大小应该是您自己代码中的一个因素。请参阅Wiki:缺少a我只能猜测这可能会有所帮助:。请显示相关代码。@itsme86没有相关代码,因为正如我在调试时所说,它甚至没有进入WebService类,并且使用较小的Base64字符串,一切正常。如果没有代码,您是否可以至少回答您的问题,以共享异常的完整
    ToString()
    输出,包括异常类型、消息、回溯和内部异常(如果有)?在使用反序列化之前,您必须首先解码base 64字符串。编写自己的反序列化代码。大小应该是您自己代码中的一个因素。参见Wiki:a我只能猜测这可能会有所帮助:。