2010-05-15 3 views
2

Я получал 404 ошибки для некоторых длинных URL-адресов на веб-сайте, который я разрабатываю. После небольшого копания я обнаружил, что это происходит, когда длина определенных аспектов URL превышает настраиваемые пределы в IIS7. В этом случае maxQueryString атрибут requestLimits необходимых свойства быть увеличен в web.config500 error for long url iis7

<system.webServer> 
<security> 
    <requestFiltering> 
    <requestLimits maxQueryString="4096" maxAllowedContentLength="4096" maxUrl="8192" > 
    </requestLimits> 
    </requestFiltering> 
</security> 

Это устранило проблему мгновенно на моем сервере разработки, но на удаленном сервере, теперь я получить:

500 - Внутренняя ошибка сервера.

Существует проблема с вашим ресурсом , и его не может быть .

И это вся информация, которую он мне дает.

+2

Почему у Вас такие большие URL, в первую очередь? Это будет иметь проблемы в любом случае. –

+1

Это странно. Ошибка должна быть HTTP 414: Way Too F #% & ing Long (http://thedailywtf.com/Articles/HTTP-414-Way-Too-Fing-Long.aspx). –

ответ

1

Измените Flash, чтобы отправить данные как POST, поэтому он не будет добавлен к URL-адресу. Here's some sample code. Кроме того, вам может потребоваться изменить серверную сторону, чтобы искать данные как POST вместо GET.

+0

У меня есть множество параметров, таких как «c = 32 & c = 33 & c = 34 ....», которые хорошо отображают параметр List в методе действий.С Post это выглядит не так просто –

+1

Я ничего не знаю о стороне asp, но если вы не видите хороший способ получить данные из POST, откройте вопрос на нем - потому что это ваша проблема , не это. ;) Даже если вы заработаете это, он просто сработает снова, когда чей-то браузер или панель инструментов или надстройка обрезают URL. (Кажется, IE имеет ограничение в 2048 символов или используется.) POST - правильный подход к тому, что вы делаете. – fenomas

+0

Вы не отвечаете на вопрос – matteofigus

0

Нельзя использовать такие длинные URL-адреса. Среди других причин по крайней мере одна из общих панелей инструментов (Bing, Yahoo, Google) нарушит их, производя только такие ошибки. Пользователи будут винить вас.

Я знаю это, потому что у одного из моих пользователей была такая проблема с устаревшим приложением. Когда я удалил панели инструментов (у нее было все три установленных!), Проблема исчезла.

+0

Мне нужно отправить сотни параметров через строку запроса из Flash. Я не уверен, как это сделать. –

+1

@Chris Porter: Не существует способа получить данные POST от Flash? – animuson

1

Вы уверены, что ваш хостер/производственный сервер работает под управлением Windows Server 2008 (или 2008 R2)? Настройки, описанные выше, действительны только для IIS 7+.

+0

Это Windows Server 2008 - веб-издание –

0

. Запрос GET ограничен только лимитом браузера по длине строки URL. В IE это 2,083 символа, минус количество символов в фактическом пути. Другие браузеры не имеют четко определенного ограничения на длину строки URL. Эти статьи могут быть полезны для вас.

http://www.boutell.com/newfaq/misc/urllength.html

http://support.microsoft.com/kb/q208427

RFC 2616, "Hypertext Transfer Protocol - HTTP/1.1" не определяет требования к длине URL, поэтому браузеры могут свободно оговаривать, что они считают нужным.

поэтому вы должны использовать POST вместо GET, если это вписывается в ваши требования