Конечная косая черта в URL вызывает проблемы с частичной обратной связью - PullRequest
0 голосов
/ 17 ноября 2009

.NET 3.5 приложение, написанное здесь на C #, с jQuery и некоторым ASP.NET AJAX UpdatePanel. Я сталкиваюсь с интересной проблемой. Я создал пользовательский элемент управления нумерацией страниц, состоящий из LinkButtons. Пользовательский элемент управления запускает событие CurrentPageChanged всякий раз, когда кто-то нажимает на страницу, предыдущую, первую или следующую кнопку. Страница, использующая этот элемент управления нумерацией страниц, отвечает за получение новейшего набора записей на основе нажатого элемента управления разбиением на страницы.

Теперь проблема, с которой я сталкиваюсь, заключается в следующем: Если у меня есть URL-адрес, как это: http://localhost:2798/user/9794/profile, все работает нормально. Однако, если у меня есть URL с косой чертой (т.е. http://localhost:2798/user/9794/profile/),, моя UpdatePanel падает на свое лицо с ошибкой 405.

Исключением является следующее:

[Исключение] Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: при обработке запроса на сервере произошла неизвестная ошибка. Код состояния, возвращенный с сервера: 405

Теперь я просмотрел запросы через Chrome Developer Tools и увидел, что он запрашивает этот URL: http://localhost:2798/user/9794/profile/profile. Похоже, что после косой черты будет добавлен дополнительный путь.

Есть идеи, как мне обойти это?

1 Ответ

1 голос
/ 17 ноября 2009

Похоже, что после косой черты будет добавлен дополнительный путь.

Да, именно так работают относительные URL. Браузер использует косую черту, чтобы решить, относится ли URL к папке (в этом случае URL может относиться к другому файлу в этой папке) или к файлу (в этом случае он должен искать родительскую папку). Так что <a href="profile"> внутри конечного слеш-URL действительно будет указывать на .../profile/profile.

Есть идеи, как мне это обойти?

Используйте абсолютные URL-адреса (или, что лучше, относительные корневые URL-адреса, такие как href="/user/9794/profile", везде, где вы делаете ссылку (явно или через элемент управления ASP.NET). Относительные URL-адреса несовместимы со стилем URL с маршрутизацией, где может содержать переменное число битов данных, разделенных косой чертой, в URL.

И / или использовать только канонические URL-адреса, чтобы URL-адрес любого данного ресурса всегда был фиксированным; если вы переходите к «неправильной» версии с дополнительной косой чертой или другим избыточным содержимым в URL, вы получаете перенаправление 301 на «правильную» версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...