簡體   English   中英

超過 3MB 的 byte[] 在 API C# 中出現 NULL

[英]byte[] over 3MB comes up NULL in API C#

我有一個用 .NET 4.7.2 編寫的桌面應用程序,它使用 API 將文件上傳到 SharePoint。

這是對 API 的調用

var responseMessage = this
                      .Client
                      .PostAsync("/Upload", new StringContent(JsonConvert.SerializeObject(file), Encoding.UTF8, "application/json"))
                      .Result;

if (!responseMessage.IsSuccessStatusCode)
    throw new Exception("Save to Sharepoint Failed");

return responseMessage;

文件對象中的內容類型和byte[]都很好,成功上傳小於3MB的文件就好了。

API .NET 4.7.1
一旦它到達 request.doc 對象,如果超過 ~3MB,則 request.doc 將為 NULL,因此上傳將失敗。

[HttpPost]
[Route("Upload")]
public async Task<IHttpActionResult> SaveFileToSharePointStream([FromBody] SharepointFileUploadRequest request)
{
    using (var ms = new MemoryStream(request.doc))
    {
        var result = await _sharepointBll.SaveFileToSharePointStream(request.newFileName, ms, request.folderPath, request.fileTags);
        return Ok(result);
    }
}

我嘗試在客戶端和服務器上添加 web.config 無濟於事。

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits>
        <headerLimits>
          <add header="Content-type" sizeLimit="30000000" />
        </headerLimits>
      </requestLimits>
    </requestFiltering>
  </security>
</system.webServer>

我認為問題可能出在String.Content() ,但我似乎找不到增加可以傳遞給它的數據量的方法。

您可以嘗試將SharepointFileUploadRequest作為參數從給定的代碼中傳遞,而不是傳遞new StringContent(JsonConvert.SerializeObject(file)

在配置中的 api 我不得不添加maxRequestLength

<httpRuntime targetFramework="4.7.1" executionTimeout="1000" maxRequestLength="30720" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM