[英]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.