Я работаю над перезаписью URL, и я нашел один учебник на сайте asp.net, способ, которым я делаю это:
URL, который я ввожу http://localhost:1573/WebNew/web/first-web
Теперь я написалодин класс
public class FixURLs : IHttpModule
{
public FixURLs()
{
//
// TODO: Add constructor logic here
//
}
#region IHttpModule Members
public void Dispose()
{
// do nothing
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
#endregion
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
/*// checking page extension
switch (System.IO.Path.GetExtension(app.Request.Url.AbsoluteUri.ToLower()))
{
case ".bmp":
case ".gif":
case ".jpg":
case ".jpe":
case ".jpeg":
case ".png":
case ".css":
case ".js":
case ".txt":
case ".swf":
// don't redirect, these requests may required in many cases
return;
break;
}*/
if (app.Request.RawUrl.ToLower().Contains("/web/"))
{
**if (app.Request.RawUrl.ToLower().Contains(".png")
|| app.Request.RawUrl.ToLower().Contains(".gif")
|| app.Request.RawUrl.ToLower().Contains(".js"))
{
return;
} **
DatabaseLayer dbLayer = new DatabaseLayer();
string urlFromBrowser = app.Request.RawUrl.ToLower();
string[] urlFormat = urlFromBrowser.Split('/');
urlFromBrowser = urlFormat.GetValue(2).ToString() + "/" + urlFormat.GetValue(3).ToString();
int WebId = dbLayer.GetWebURLId(urlFromBrowser.Trim());
app.Context.RewritePath("Default.aspx", "", "WebId="+WebId);
}
}
Но проблема в том, что он не перенаправляет на страницу Default.aspx.
Я получаю следующую ошибку:
Описание: HTTP404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, изменилось его имя или временно недоступен.Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.
Запрошенный URL: /WebNew/web/Default.aspx
Я вижу, что он запрашивает URL /webNew/web/Default.aspx, но мне просто нужен /webnew/default.aspx? WebId = 2
Пожалуйста, помогите мне
РЕДАКТИРОВАТЬ
Спасибо за ответ, но я не могу принять ни ваш ответ, ни кнопку комментарияработает на меня, вот почему я редактирую свой пост.Я получаю ошибку JavaScript: объект ожидается, и вопрос объекта является нулевым.
@ Waqas Raja Спасибо за ваш ответ, теперь он работает нормально.Но когда я установил точку останова в событии (! IspostBack) страницы Default.aspx, я увидел, что она возникает около 8 раз.После загрузки страницы несколько изображений пропали.Многократное обновление - проблема?Любая идея, почему это происходит снова и снова к событию if (! IsPostBack).Спасибо за вашу помощь
EDIT1
@ Waqas Raja Я приму ваш ответ после входа в систему из другого браузера.
EDIT2
@ Waqas Raja Я показываю изображение на своей домашней странице вот так
Есть несколько других изображений, которые также отображаются таким образом, все они приходятправильно при загрузке, но когда я использую переписывание URL, я вижу только альтернативный текст.
Я пробовал это также
, но тот же результат.:-( Любое предложение?
Проверяя необработанный URL-адрес, я вижу, что есть много запросов, кроме страницы, т.е. jpg, .js, как вы упомянули. Я обновил код, это правильно?потому что я не могу видеть изображения и некоторые функции javascript.
EDIT3
@ Waqas Raja Большое спасибо за вашу помощь. Теперь я могу видеть изображения. Яудалил HTML-изображение в asp: Image controla и сохранив ImageURL как ~ / images / facebook_icon.png.
Но я все еще не вижу эффектов файла JS на странице, я поставил src = "~ /JS / jQuery.js ", но он все еще не работает. Я поместил код, упомянутый вами, в моем классе [именно там, где вы меня вели).