私は URL の書き換えに取り組んでおり、asp.net サイトで 1 つのチュートリアルを見つけました。
入力している URL http://localhost:1573/WebNew/web/first-web
今、私は1つのクラスを書きました
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。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の 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別のブラウザからログインした後、回答を受け付けます。
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" を配置しましたが、まだ機能していません。あなたが言及したコードを私のクラスに配置しました [ちょうどあなたが私を導いてくれた場所]。