#asp.net #url-rewriting
#asp.net #url-перезапись
Вопрос:
Я использую Intelligencia UrlRewriter для перезаписи URL-адреса.
Я взял page1.aspx
и использовал OnClick
событие кнопки и выполнил Response.Redirect
to page2.aspx
. Все работает нормально, если я протестирую эти две примерные страницы.
Затем я применил некоторые стили и javascript для page2.aspx
. Когда я нажимаю одну и ту же кнопку на page1.aspx
и ставлю точку останова на page2.aspx.cs
page_load
функции, я заметил, что page_load
функция зацикливается несколько раз, и она зацикливает и загружает все вызовы базы данных несколько раз.
Применение IsPostback
не помогло. Затем я удалил CSS и JS, после чего все в порядке.Нужен ответ, почему эта page_load
функция повторяется несколько раз.
Комментарии:
1. установили ли вы правила перезаписи url для папок JS и css?
Ответ №1:
У меня тоже была эта проблема. Как и другие, это может быть вызвано относительными путями внутри вашей страницы.
Я переписывал:
domain.com/article/12345/title-here
Чтобы стать:
domain.com/article.aspx?ID=12345
Проблема заключалась в том, что было 2 изображения с относительными путями:
EG. images/fb.jpg
images/tw.jpg
Путем записи значения в запросе.RawUrl.С помощью функции toString() я смог увидеть, что браузер запрашивал следующие изображения:
domain.com/article/12345/images/fb.jpg
domain.com/article/12345/images/tw.jpg
Хотя эти файлы не существуют, URL по-прежнему удовлетворял правилу перенаправления.
Таким образом, переписывая URL на:
domain.com/article.aspx?ID=12345
Это объясняет, почему моя страница загружалась три раза. Один раз для HTML и один раз для каждого изображения.
Изменил значения src изображения на абсолютный путь, и проблема была решена.
Ответ №2:
Вы должны установить правила перезаписи для каталогов CSS и JS. Ваша страница вызывается снова и снова, потому что по запросу файлов css и JS ваша страница обслуживается. установите правила перезаписи для ваших CSS и JS в соответствии с вашей системой каталогов.
Редактировать не уверен, может сработать
<rewrite url="^(/. (.gif|/. .png|.jpg|.ico|.pdf|.css|.js|.asmx|.axd|.flv|.swf)(?. )?)$" to="$1" processing="stop" />
Комментарии:
1. Все мои css-файлы находятся в папке Styles, а все мои js-файлы — в папках js, и обе эти папки находятся в папке main directory…so можете ли вы указать мне, как написать REWRITERULE в этом случае, поскольку я совершенно новичок в перезаписи URL и полностью потерян на этом этапе REWRITERULES …….. пытался, но не могу решить мою проблему
2. мое приложение находится на ASP .NET 3.5 C#
3. спасибо мистеру Пракашу, который действительно спас мой день … теперь это работает, и теперь я даже понял логику того, как с этим обращаться ……… можете ли вы также посоветовать несколько лучших ссылок, чтобы получить глубокие знания о переписывании URL… для asp.net Приложение 3.5 C #……..
Ответ №3:
Циклы загрузки страницы выполняются с использованием готовых ASP.Net также реализация. Один из способов, которым вы можете проверить наличие и уменьшить накладные расходы на обработку, — это проверить объект HttpContext, чтобы увидеть, какой объект запрашивается в данный момент. Если объект не соответствует вашим ожиданиям — изображение, файл .js, таблица стилей и т.д., прекратите обработку страницы.