-1

ホストヘッダーに基づいて異なる方法でリダイレクトすることを目的として、このような default.aspx ページがあります。

<%
if(System.Web.HttpContext.Current.Request.Url.Host == "xxx.xxx.com")
{
response.redirect ("place/subplace/xxx.aspx")
}
else
{
response.redirect ("place/xxx.aspx")
}
%>

しかし、「コンパイラ エラー メッセージ: BC30201: 式が必要です」というエラーが表示されます。

私は何を間違っていますか?

4

4 に答える 4

4

C# では、式はセミコロンで終了します;

if (System.Web.HttpContext.Current.Request.Url.Host == "xxx.xxx.com")
{
    Response.Redirect("place/subplace/xxx.aspx"); <-- here
} 
else
{
    Response.Redirect("place/xxx.aspx"); <-- and here
}

C# では大文字と小文字が区別されます。どちらも大文字Responseで始まります。Redirect

編集:これをVB.Netとしてタグ付けしたので

あなたのコードは有効な VB.net コードではありません。もしそうなら、それは次のように読むべきです:

If System.Web.HttpContext.Current.Request.Url.Host = "xxx.xxx.com" Then
    Response.Redirect("place/subplace/xxx.aspx")
Else
    Response.Redirect("place/xxx.aspx")
End If
于 2012-05-11T20:04:47.343 に答える
0

以下は私のために働きます:

protected void Page_Load(object sender, EventArgs e)
    {
        if(System.Web.HttpContext.Current.Request.Url.Host == "xxx.xxx.com")
        {
            Response.Redirect("place/subplace/xxx.aspx");
        }
        else
        {
            Response.Redirect("place/xxx.aspx");
        }
    }
于 2012-05-11T20:10:19.490 に答える
0

これは私にとってはうまくいきました。http://www.w3schools.com/asp/met_redirect.asp

上記のリンクを使用して、次の行を書きましたが、問題なく実行されました。最後にセミコロンがないことに注意してください。私の default.aspx ページには、次の 3 行だけが含まれています。

<%
    Response.Redirect("~/portal")
%>

考えられる理由は次のとおりです。通常、言語は .aspx ページの上部または web.config ファイルに記載されています。言語が言及されていない場合、IIS は VB.NET を使用してページをコンパイルし、VB.NET はステートメントを終了するためにセミコロンを使用しないことがわかっています。

于 2013-07-05T15:58:28.867 に答える
0

コンパイラが "expression expected" というエラーを出す場合、通常はシンタックス エラーです。response.redirect? の後にセミカラム (;) を追加しますか?

于 2012-05-11T20:05:32.563 に答える