Ошибка загрузки файла с большим размером в igUpload
Я использую igUpload от Infragistics для загрузки нескольких файлов. Все работает нормально, когда размер файла меньше 3 МБ, но когда я пытаюсь загрузить файл с большим размером, происходит сбой и возвращается эта ошибка
Не удалось получить текущий статус файла! Возможно соединение оборвано
Я также изменил uploadUtilsBufferSize на 10485760, но для больших файлов все еще ничего не работает. Ниже приведена конфигурация для igUplaod
Button.igUpload({
mode: 'multiple',
multipleFiles: true,
AutoStartUpload: false,
progressUrl: "IGUploadStatusHandler.ashx",
controlId: "upload1",
labelUploadButton: "Upload",
onError: function(evt, ui) {
if (ui.errorType == "serverside") {
ErrorMessage.append("<p>" + ui.serverMessage + "</p>");
} else if (ui.errorType == "clientside") {
ErrorMessage.append("<p>" + ui.errorMessage + "</p>");
}
}
});
1 ответ
На веб-сервере IIS существует ограничение максимальной длины запроса. Для IIS 6 это 4 МБ (подробности здесь). Для IIS 7 и новее - 28,6 МБ (подробности здесь).
В зависимости от того, какую версию IIS вы используете, попробуйте следующие параметры в файле web.config:
IIS 6 (web.config):
<system.web>
<httpHandlers>
<add verb="GET" type="Infragistics.Web.Mvc.UploadStatusHandler"
path="IGUploadStatusHandler.ashx" />
</httpHandlers>
<httpModules>
<add name="IGUploadModule" type="Infragistics.Web.Mvc.UploadModule" />
</httpModules>
<!--OPTIONAL: Set the maximum request length.
By default the request lenght is 4 MB.
More info: http://msdn.microsoft.com/en-us/library/e1f13641(v=vs.85).aspx-->
<httpRuntime executionTimeout="3600" maxRequestLength="2097151000"/>
</system.web>
IIS 7 (и более поздние версии) (web.config):
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="IGUploadModule" type="Infragistics.Web.Mvc.UploadModule"
preCondition="managedHandler" />
</modules>
<handlers>
<add name="IGUploadStatusHandler" path="IGUploadStatusHandler.ashx" verb="*"
type="Infragistics.Web.Mvc.UploadStatusHandler" preCondition="integratedMode" />
</handlers>
<security>
<requestFiltering>
<!--OPTIONAL: Set the maximum request length.
By default the request lenght is ~30 MB.
More info: http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits-->
<requestLimits maxAllowedContentLength="2097151000"/>
</requestFiltering>
</security>
</system.webServer>
PS: эта информация задокументирована в справке по Ignite UI здесь.
Я также получил это сообщение, когда каталог, в который я пытался загрузить, не имел достаточных прав для настроенного пользователя IIS. В моем случае предоставление IIS_IUSR разрешения на запись в папку решило мою проблему.