1

VB.NETでResponse.Write()を使用して、相対URLにリダイレクトしたいと思います。私は次のコードを使用しています:

編集:

Response.Write(("account/msgbox.aspx?action=account&status=" & Convert.ToInt16(eAccountStatus).ToString))

Response.Write(("~/account/msgbox.aspx?action=account&status=" & Convert.ToInt16(eAccountStatus).ToString))

Response.Write(("/account/msgbox.aspx?action=account&status=" & Convert.ToInt16(eAccountStatus).ToString))

私の場合も同じように返します。

私のアプリケーションエラーイベントハンドラーは、形成されているURLが無効であることを報告します。

これが私が得ているものです:

http://localhost:14154/~/http:/localhost:14154/account/msgbox.aspx?action=account&status=6

これの代わりに

http:/localhost:14154/account/msgbox.aspx?action=account&status=6

Response.Write()の前のResponse.Clear()は何もしません。

プロジェクト全体がResponse.Write()を使用する前に、 Response.Redirect()を使用/切り替えることができず、Response.Redirect()の使用を選択すると、Response.Write呼び出しの後に書き込まれるすべてのコードが使用できなくなります。

どういうわけか追加されているベースURLをクリアする必要があります。どうすればこれを達成できるか教えてください。

ありがとうございます。

PS:このコードは以前は正常に機能していました。一部の開発者が変更を加えましたが、Response.Write()が上記のようにリダイレクトを引き起こしていません。

編集

スタックトレース:

System.Web.HttpException(0x80004005):ファイル'/~/account/msgbox.aspx'は存在しません。System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath、Boolean noBuild、Boolean allowCrossApp、Boolean allowBuildInPrecompile、Boolean throwIfNotFound、Boolean sureIsUpToDate)atSystem.Web.Compilation。 BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context、VirtualPath virtualPath、Boolean noBuild、Boolean allowCrossApp、Boolean allowBuildInPrecompile、Boolean throwIfNotFound、Boolean sureIsUpToDate)at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath、HttpContext context、Boolean allowCrossApp、 .Web.Compilation.BuildManager。

4

2 に答える 2

1

baseUrlを設定するコードが2回設定しているようです。それが見つからない場合は、次のコードをその上に詰め込むことができます。

Response.Write((baseUrl.replace("http://localhost:14154/~/http:/localhost:14154/", _
    "http://localhost:14154/") & "account/msgbox.aspx?action=account&status=" & _ 
    Convert.ToInt16(eAccountStatus).ToString))

原点(baseUrlが設定されている場所)で修正することをお勧めします。

于 2013-03-05T21:52:20.637 に答える
1

OK私はこれを使って問題を解決しました。私はまだこれがどのように機能するかを理解する必要がありますが。しかしとにかく私は同様の問題に遭遇した人のためにそれを投稿しています。

これが私の新しいコードです。

Response.Write(("../account/msgbox.aspx?action=account&status=" & Convert.ToInt16(eAccountStatus).ToString))
于 2013-03-05T22:00:24.860 に答える