HttpWebRequest скопировать большой файл и получить 404 не найден - PullRequest
0 голосов
/ 02 октября 2018

Копирую без проблем маленький файл.Когда пользователи пытаются загрузить файл большого размера (я думаю,> 60 МБ), я попал в веб-исключение (404 не найдено).

Я почти уверен, что проблема связана с размером файла.Я получил исключение на

webRequest.GetResponse()

Нужна ли модификация на стороне сервера?Любое предложение ценится.

    public static bool UploadFile(IResult result, string pathFile, Stream stream)
    {
        // upload effettivo del file su DB
        HttpWebRequest webRequest = WebRequest.Create(ClientCommon.Properties.Settings.Default.FileServiceURI) as HttpWebRequest;
        HttpWebResponse response = null;
        Stream s = null;
        try
        {
            webRequest.Method = WebRequestMethods.Http.Post;
            webRequest.Credentials = CredentialCache.DefaultCredentials;
            webRequest.KeepAlive = true;

            using (WebRequestBuilder wrb = new WebRequestBuilder())
            {
                webRequest.ContentType = wrb.ContentType;

                wrb.AddTextPart("cdFile", pathFile);
                wrb.AddFilePart("file", stream);
                wrb.AddTextPart("destination", pathFile);


                if (wrb.GetContent(result, out s) == false)
                    return false;

                s.CopyTo(webRequest.GetRequestStream());
            }

            response = webRequest.GetResponse() as HttpWebResponse;

            return true;
        }
        catch (WebException exc)
        {
            result.SetError(exc.Message);
            return false;
        }
        finally
        {
            if (response != null)
                response.Close();

            if (s != null)
                // When the above code has ended, close the streams
                s.Close();
        }
    }

1 Ответ

0 голосов
/ 02 октября 2018

Попробуйте добавить следующий код в web.config.

<system.web>
     <!-- Your other settings here -->
    <httpRuntime targetFramework="Your Framework" maxRequestLength="2147483647" />
</system.web>

<system.webServer>
    <!-- Your other settings here -->
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="2147483647" />
      </requestFiltering>
    </security>
</system.webServer>

maxRequestLength: Свойство maxRequestLength указывает максимальный размер загрузки файла, поддерживаемый ASP.NET.Это ограничение можно использовать для предотвращения атак типа «отказ в обслуживании», вызванных тем, что пользователи размещают большие файлы на сервере.Указанный размер указан в килобайтах.По умолчанию установлено значение 4096 КБ (4 МБ). Здесь вы можете узнать больше о maxRequestLength.

maxAllowedContentLength: Указывает ограничения на запросы, обрабатываемые веб-сервером. Здесь вы можете узнать больше о maxAllowedContentLength.

. Приведенным выше кодом вы можете получить файл размером до 2 ГБ.Вы можете изменить его по своему усмотрению

...