2013-05-23 34 views
7

ユーザーがアプリケーションにアクセスできるかどうかを確認する次のコードがあります。問題はSystem.Web.HttpContext.Current.User.Identity.Nameが空を返します。私がチェックしました。何が問題なの?私の他のアプリケーションは、同じコードスニペットを使用し、そこで動作します。なぜこうなった?System.Web.HttpContext.Current.User.Identity.Nameが空の文字列を返すのはなぜですか?

string username = System.Web.HttpContext.Current.User.Identity.Name; 
string str = "SELECT LASTNAME +', '+ FIRSTNAME AS NAME, USER_NAME, DEPARTMENT FROM DBNAME.DBO.TABLENAME WHERE USER_NAME = '" + username + "' "; 
SqlCommand cmd = new SqlCommand(str, conn); 
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
if (rdr.HasRows == false) 
{ 

     Server.Transfer("unauthorized.htm"); 
} 
else 
{ 
    while (rdr.Read()) 
    { 
     name = rdr["NAME"].ToString(); 
     username = rdr["USER_NAME"].ToString(); 
     dept = rdr["DEPARTMENT"].ToString(); 
    } 
} 
+0

このコードはASP.netアプリケーションから取得したものですか? –

+0

両方のアプリケーションが独自の認証状態を管理していますか? –

+0

おそらく私たちにあなたのweb.configを与える価値があります – Aron

答えて

5

匿名ユーザーがいるようです。 \ Users \ユーザー\ [ユーザー名]:匿名ユーザーを許可したくない場合は、web.configファイルに次の行を追加します。

<system.web> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 
</system.web> 
+0

これはちょうど私にサーバーエラー401を与えます - 無認可:無効な資格情報のためにアクセスが拒否されました。 – Artemis

+3

IISはWindows認証を使用するように設定されていますが、web.configには ''がありますか? – Joe

+0

はいとはい。これは単なる奇妙なことです。私の他のアプリケーションには同じコードがあります。それはそこでうまく動作します。 – Artemis

関連する問題