這問題之前曾遇過幾次,但處理得有些含糊,這回特別做了測試釐清。

【疑問】要用NetworkCredential設定存取身份時,網域帳號可否寫成"domainName\userName",例如: new NetworkCredential("domainName\\userName", "password") ?

不知為什麼,我一直記得這樣寫是可行的(也許因為Windows的登入視窗,可以選擇domainName\userName或將domainName寫到第三個欄位吧?),今天實地做了測試,答案是: (分別測試了Windows 2000/Windows 2003、在Web本機存取自己的Web、本網域/信任網域...)

不行!!! 請乖乖寫成new NetworkCredential("userName", "password", "domainName")

不過,為求方便,我們應該要允許使用者輸入"domainName\userName",然後在程式裡用以下方法快速拆解:
if (userName.Contains("\\")) {
    string[] p = userName.Split('\\');
    cred = new NetworkCredential(p[1], password, p[0]);
}

【網友經驗】


Comments

Be the first to post a comment

Post a comment