Возникают проблемы при загрузке файлов на сервер через API. При попытке загрузить изображение размером 8 Мб на сервер из Почтальона. В первый раз, я пытаюсь загрузить это показывает «Страница не была отображена, потому что объект запроса слишком велик». Но странная вещь: «Когда я загружаю маленькое изображение размером, например, 300 КБ, оно загружает и пытается загрузить следующее изображение размером 8 МБ и через 3 или 5 минут я получаю ту же ошибку.
Мой код загрузки
[Route("api/[controller]")]
public class UploadImageController : Controller
{
private IHostingEnvironment _environment;
public UploadImageController(IHostingEnvironment environment)
{
_environment = environment;
}
internal void IsExists(string filepath)
{
if (!Directory.Exists(_environment.WebRootPath + "\\media"))
{
Directory.CreateDirectory(_environment.WebRootPath + "\\media");
}
if (!Directory.Exists(_environment.WebRootPath + "\\media\\" + filepath))
{
Directory.CreateDirectory(_environment.WebRootPath + "\\media\\" + filepath);
}
}
internal string GetNewFileName(string filenamestart, string fullname)
{
Char delimiter = '.';
string fileExtension;
string strFileName = string.Empty;
strFileName = DateTime.Now.ToString().
Replace(" ", string.Empty).
Replace("/", "-").Replace(":", "-");
fileExtension = fullname.Split(delimiter).Last();
Random ran = new Random();
strFileName = $"{ filenamestart}_{ran.Next(0, 100)}_{strFileName}.{fileExtension}";
return strFileName;
}
private bool IsValidExtension(IFormFile filename)
{
bool isValid = false;
Char delimiter = '.';
string fileExtension;
string[] imgTypes = new string[] { "png", "jpg", "gif", "jpeg" };
fileExtension = filename.FileName.Split(delimiter).Last();
// fileExtension = substrings[substrings.Length - 1].ToString();
int fileType = 0;
if (imgTypes.Contains(fileExtension.ToLower()))
{
fileType = 1;
}
switch (fileType)
{
case 1:
if (imgTypes.Contains(fileExtension.ToLower()))
{
isValid = true;
}
break;
default:
isValid = false;
break;
}
return isValid;
}
[HttpPost]
// GET: api/<controller>
[Route("UploadapiImage")]
[RequestFormLimits(MultipartBodyLengthLimit = 209715200)]
[RequestSizeLimit(209715200)]
public async Task<IActionResult> UploadapiImage()
{
try
{
var Files=Request.Form.Files;
if (Files.Count == 0)
{
return Ok(Json(""));
}
IsExists("Mobile");
//var file = Convert.FromBase64String(objUploadModel.File);
string uploads = _environment.WebRootPath + "\\media\\Mobile";
int i = 0;
string[] strFileNames = new string[Files.Count];
foreach (var file in Files)
{
if (IsValidExtension(file))
{
string imagename = GetNewFileName("Mobile", Files[i].FileName);
string fullpath = uploads + "\\" + imagename;
using (FileStream fileStream = System.IO.File.Create(fullpath))
{
await Task.Run(() => Files[i].CopyToAsync(fileStream));
fileStream.Flush();
fileStream.Close();
}
strFileNames[i] = "\\media\\Mobile\\" + imagename;
}
else
{
strFileNames[i] = "";
}
i++;
}
return Ok(strFileNames);
}
catch (Exception ex)
{
return Ok("Exception from Api");
}
}
}
В Startup.cs
services.Configure<FormOptions>(x =>
{
x.ValueLengthLimit = int.MaxValue;
x.MultipartHeadersLengthLimit = int.MaxValue;
x.MultipartBodyLengthLimit = int.MaxValue;
});
В веб-конфигурации.
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
Я пытаюсь вести логи на сервере и IIS Я не нашел ни одногоинформация В журналах IIS записывается
#Software: Microsoft Internet Information Services 10.0
Версия: 1.0
Дата: 2019-11-10 05: 59: 05
Поля: дата и время s-ipcs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs (User-Agent) cs (Referer) sc-status sc-substatus sc-win32-status time -used
2019-11-10 05:59:05 10.0.0.4 POST / api / UploadImage / UploadapiImage - 443 - 27.34.104.230 Mozilla / 5.0 + (Windows + NT + 10.0; + Win64; + x64) + AppleWebKit / 537.36 +(KHTML, + like + Gecko) + Chrome / 78.0.3904.97 + Safari / 537.36 - 413 0 0 1636
Моя версия IIS на сервере показана на изображении.
![enter image description here](https://i.stack.imgur.com/4x6b9.png)