2

以下のコードはpage_Loadに配置されます。初めてページに直接アクセスし、リファラーがない場合にUrlReferrerをバイパスするには、これをどのように処理する必要がありますか?私がここで欠けているものは何ですか?

    if (HttpContext.Current.Request.UrlReferrer.AbsoluteUri != null)
    {
        urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
    }
    else
    {
        urlReferer = "";
    }
4

6 に答える 6

5

UrlReferrernullをチェックするだけです:

if (HttpContext.Current.Request.UrlReferrer != null 
    && HttpContext.Current.Request.UrlReferrer.AbsoluteUri != null)
{
     urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
}     
else     
{         
    urlReferer = "";     
} 
于 2012-07-11T14:19:59.187 に答える
3

クライアントがHTTPリクエストでリファラーを通過したと誰が言いますか?

UrlReferrernull最初かどうかを確認します

if (HttpContext.Current.Request.UrlReferrer != null)
    {
        urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
    }
    else
    {
        urlReferer = "";
    }
于 2012-07-11T14:19:40.483 に答える
2

かどうかを確認する必要があると思いますHttpContext.Current.Request.UrlReferrer != null

于 2012-07-11T14:19:48.407 に答える
2

nullをチェックするよりも、この方法の方がはるかにクリーンではないのはなぜですか

private void Page_Load()
{
    if (!IsPostBack)
    {
        if (HttpContext.Current.Request.UrlReferrer != null)
        {
            urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
        }
        else
        {
            urlReferer = "";
        }
    }
}
于 2012-07-11T14:25:39.907 に答える
0

UrlReferrerがnullの場合、AbsolutUriへのテストは失敗します。

最初にUrlReferrerのnullをテストしてみてください。これにより、おそらく問題が修正されます。

于 2012-07-11T14:20:23.960 に答える
0

デバッガーを使用します。Visual Studioでこれを実行している場合は、例外がスローされたときにデバッガーウィンドウが表示される可能性があります。デバッガーの下部には、「ローカル」と「監視」を含む複数のタブがあり、それらを使用して、どの変数が格納されているかを確認できます。

上記のコードが実際に問題の原因である場合

HttpContext.Current.Request.UrlReferrer.AbsoluteUri
または
HttpContext.Current.Request.UrlReferrer
または
HttpContext.Current.Request
または
HttpContext.Current
または
HttpContext

nullに設定されています

于 2012-07-11T14:22:09.910 に答える