3

我正在使用 MVC4 和 C# 开发一个 Web 应用程序。

我需要通过 AJAX 发送 PDF,所以我将它们转换为 base64 并将它们发送到 C# 中的函数。该函数将调用 Web 服务上的另一个函数。

问题是,Web 服务函数没有获取 base64 字符串,因为它非常大,但不是太大,它大约 111,000 个字符,比如 70kb。我收到错误 413

pdfCony 是我的 base64 字符串

在此处输入图像描述

我已经在 web 服务的 web.config 中设置了 maxRecievedMesage:

 <bindings>
  <basicHttpBinding>
    <binding name="basicHttpsBinding" maxReceivedMessageSize="524288000" />
    <binding name="mexHttpBinding" maxReceivedMessageSize="524288000" />
  </basicHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="ServicioCCMasAvalBehavior" name="ServicioCCMasAval.ServicioCCMasAval">
    <endpoint address="/" binding="basicHttpBinding" contract="ServicioCCMasAval.IServicioCCMasAval" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

所以我不知道是什么问题。请帮忙。

4

3 回答 3

5

非常感谢。但我在另一个 web.config 示例中找到了解决方案

这是我的 web.config:

<bindings>
  <basicHttpBinding>
    <binding name="basicHttpsBinding" maxReceivedMessageSize="524288000" />
    <binding name="mexHttpBinding" maxReceivedMessageSize="524288000" />
  </basicHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="ServicioCCMasAvalBehavior" name="ServicioCCMasAval.ServicioCCMasAval">
    <endpoint address="/" binding="basicHttpBinding" contract="ServicioCCMasAval.IServicioCCMasAval" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

我错过了enpoint上的 bindingConfiguration。现在这是我的工作 webconfig:

<bindings>
  <basicHttpBinding>
    <binding name="basicHttpBinding" maxReceivedMessageSize="524288000" />
    <binding name="mexHttpBinding" maxReceivedMessageSize="524288000" />
  </basicHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="ServicioCCMasAvalBehavior" name="ServicioCCMasAval.ServicioCCMasAval">
    <endpoint address="/" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding" contract="ServicioCCMasAval.IServicioCCMasAval" />      
  </service>
</services>

真的真的非常感谢。

于 2013-11-13T16:49:29.910 回答
1

这是正确的配置,但我认为 Visual Studio 有自己的配置文件,因此当您处于调试模式时,您实际上必须更改 Visual Studio 的 app.config,它与 C:\Program Files (x86)\ 的路径相同Microsoft Visual Studio 10.0\Common7\IDE\ EXE 我相信。还有 maxSend 不确定您是否将它们翻转

如果您正在远程调试,请忽略此答案

于 2013-11-13T16:36:01.560 回答
1

我有同样的问题,但是对于我的情况,我必须传输非常大的文件(超过 1Go),并且绑定配置必须在 Streamming 上,

所以这是我解决问题的方法:

<bindings>
  <basicHttpBinding>
    <binding name="HttpStreaming" maxReceivedMessageSize="67108864" transferMode="Streamed"/>
  </basicHttpBinding>

  <!-- an example customBinding using Http and streaming-->
  <customBinding>
    <binding name="Soap12">
      <textMessageEncoding messageVersion="Soap12WSAddressing10" />
      <httpTransport transferMode="Streamed" maxReceivedMessageSize="67108864"/>
    </binding>
  </customBinding>
</bindings>

<services>
  <service name="FileTransferService">
    <endpoint address="http://localhost:40040/FileTransferService.svc" binding="basicHttpBinding" bindingConfiguration="HttpStreaming" name="NameSpace.FileTransferService" contract="NameSpace.IFileTransferService" />
  </service>
</services>
于 2014-07-09T17:05:29.623 回答