我有一個WCF服務,如果我使用一個登錄時會起作用,但如果我嘗試使用任何其他登錄進行登錄,則會引發以下錯誤。奇怪的是,如果我將密碼更改爲正在工作的登錄名,新密碼不起作用,但舊密碼仍然有效。這幾乎就像是緩存一些東西。當對PrincipalContext驗證憑證時,WCF服務會拋出錯誤?
我得到的錯誤是這樣的:由同一個用戶使用多個用戶名
多重連接到服務器或共享資源, ,是不允許的。斷開與服務器的所有 以前的連接或共享資源,然後再試一次
導致該錯誤代碼是這樣的:
public UserModel Login(string username, string password)
{
if (username == null || password == null)
return null;
using (var pContext = new PrincipalContext(ContextType.Machine))
{
if (pContext.ValidateCredentials(username, password))
{
using (var context = new MyEntities())
{
// I can tell from a SQL trace that this piece never gets hit
var user = (from u in context.Users
where u.LoginName.ToUpper() == username.ToUpper()
&& u.IsActive == true
select u).FirstOrDefault();
if (user == null)
return null;
var userModel = Mapper.Map<User, UserModel>(user);
userModel.Token = Guid.NewGuid();
userModel.LastActivity = DateTime.Now;
authenticatedUsers.Add(userModel);
sessionTimer.Start();
return userModel;
}
}
}
return null;
}
我看到一個相關的問題here,這表明問題是與PrincipalContext
,但無人接聽
更新
得到它的工作.....我重新啓動了我們的生產服務器,因爲我們需要在接下來的一個小時內爲重要的人員工作,並且我認爲,因爲之前的鏈接表明重新啓動會得到一個單一登錄名,只需重新啓動並使用所需的登錄名登錄即可,並且在重新啓動後,所有工作都完美無缺。我昨天大部分時間都呆在這裏,遲到了,今天早上所有的時間都想弄明白這一點。我們不應該重啓我們的網絡服務器,但重要的是要做到這一點,所以我反正做了,現在一切都按照它應該的方式工作。
我仍然想知道它的問題是什麼。我最好的猜測是,某些原因導致PrincipalContext
無法正確處理,這阻止了我使用任何其他憑據登錄。
您可以在您的配置文件(web.config/app.config)中將您的ServiceModel標籤發佈到您的生產環境中,而不是您的開發機器上嗎? – AJC
@AJC已更新爲顯示ServiceModel – Rachel
我不知道爲什麼不調試服務器端代碼並捕獲發生的任何異常。從你寫的東西看來,你唯一能夠發現異常的地方就是客戶端。 –