我正在处理 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 页面。
我收到以下错误:
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/WebNew/web/Default.aspx
我可以看到它正在请求 URL /webNew/web/Default.aspx 但我只需要 /webnew/default.aspx?WebId=2
请帮助我
编辑
谢谢你的回答,但我无法接受你的回答,评论按钮也对我有用,这就是我编辑帖子的原因。我收到 JavaScript 错误:Object expected and Object question is null。
@Waqas Raja 感谢您的回答,现在工作正常。但是当我在 Default.aspx 页面的 (!IspostBack) 事件中放置断点时,我可以看到它出现了8次。加载页面后,一些图像消失了。是多次刷新的问题吗?知道为什么它会一次又一次地发生在 if(!IsPostBack) 事件中。谢谢你的帮助
编辑1
@Waqas Raja 我会在从其他浏览器登录后接受您的回答。
编辑2
@Waqas Raja 我在我的主页上显示这样的图像
还有其他几张图片也以这种方式显示,它们在正常加载时都正常显示,但是当我使用 URL 重写时,我只能看到 alt 文本。
我也试过这个
但同样的结果。:-( 有什么建议吗?
通过检查原始 url,我可以看到除了页面之外还有许多请求,即 jpg、.js 就像你提到的那样。我已经更新了代码,是否正确?因为我看不到图像和一些 javascript 函数。
编辑3
@Waqas Raja 非常感谢您的帮助。我现在可以看到图像了。我已将 HTML 图像删除到 asp:Image controla 并将 ImageURL 保留为 ~/images/facebook_icon.png。
但是还是看不到页面上的js文件效果,我放了src="~/JS/jQuery.js"还是不行。我已将您提到的代码放在我的课堂上[就在您指导我的地方]。