Я пытаюсь создать веб-службу для загрузки файлов по почте с помощью Asp.Net Web Api. Это реализация для Client и Web Api соответственно:
Клиент:
using (var client = new HttpClient()) {
client.BaseAddress = new Uri("https://127.0.0.1:44444/");
using (var content =
new MultipartFormDataContent("Upload----" + DateTime.Now.ToString(CultureInfo.InvariantCulture))) {
content.Add(new ByteArrayContent(File.ReadAllBytes(filepath)));
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
var response = await client.PostAsync("api/Synchronization", content);
if (response.IsSuccessStatusCode)
eventLog1.WriteEntry("Synchronization has been successful", EventLogEntryType.Information);
else
eventLog1.WriteEntry(response.StatusCode + ":" + response.ReasonPhrase, EventLogEntryType.Error);
}
}
Сервер:
public class SynchronizationController : ApiController {
public HttpResponseMessage SynchronizeCsv() {
var task = this.Request.Content.ReadAsStreamAsync();
task.Wait();
Stream requestStream = task.Result;
try {
Stream fileStream = File.Create(HttpContext.Current.Server.MapPath(path));
requestStream.CopyTo(fileStream);
fileStream.Close();
requestStream.Close();
}
catch (IOException) {
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "A generic error occured. Please try again later.");
}
HttpResponseMessage response = new HttpResponseMessage();
response.StatusCode = HttpStatusCode.Created;
return response;
}
}
Web.config:
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" maxRequestLength="2097152" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Я пытаюсь загрузить файл размером 5 МБ, и каждый раз, когда я пытаюсь вызвать службу, я получаю 413 Http Error Entity Too Large. Если файл небольшой (например, 40kb), все работает нормально.
Просматривая Интернет, я попытался сделать несколько изменений в web.config, но ничего не работает должным образом. Что я делаю не так?
Я решил проблему с помощью этого решения: http://www.smartdigitizers.com/net-development-tips/iis-7-how-to-resolve-error-https-413-request-entity-too-large/