現在、このコードは、認証されたユーザー (Windows 認証) を取得することで機能します。Active Directory を使用しています。ただし、ネットワークに接続していないときにこの特定のアプリケーションにログインしようとすると、ISA 2006 サーバーにリダイレクトされ、そこからログイン情報がアプリケーションに渡されます (理論上は笑)。
3G を介して携帯電話でこのアプリにアクセスすると、かなり遅いですが、エラーは発生しません (エラーは、[OK] ボタンのあるポップアップであり、エラーと表示されることもあれば、表示されないこともあります)。ただし、外部より高速で優れたコンピューターを使用すると、このエラーが発生します。私の同僚による単体テストでは、ある種の再帰ループまたは何らかのエラーが発生していることが明らかになりました。ネットワーク上で Web アプリケーションにログインするたびに、問題なく Windows 認証が取得され、エラーは発生しません。私は自分のバグを見つけようとして 3 日間費やしましたが、見つけることができませんでした。別の数組の目がそれを追跡するのに役立つことを願っています (私は C# で ASP.net 4.0 を使用しています)。
public string IdentifyUser()
{
string retval = string.Empty;
try{
//System.Security.Principal.WindowsPrincipal p = System.Threading.Thread.CurrentPrincipal as System.Security.Principal.WindowsPrincipal;
//string UserIdentityName = p.Identity.Name;
string UserIdentityName = Request.ServerVariables["AUTH_USER"];
//string UserIdentityName = HttpContext.Current.User.Identity.Name.ToString();
string slash = @"\";
string Username = UserIdentityName.Substring(UserIdentityName.IndexOf(slash) + 1);
retval = Data_Access_Layers.SQL.GetUserID(Username);
}
catch (Exception ex)
{
throw ex;
}
return retval;
}
基本的にこれは発火し、ユーザー名を取得し、「GetUserID」に送信され、そのユーザー名を検索し、そのユーザーに関連付けられたユーザー ID を返信します。これはメイン ページに送信され、javascript 変数に格納されます。 (ページの他の部分で使用するため)