是否有可能使用C#創建會話WCF WebHttpBinding? (喜歡的東西像PHP的會話與餅乾等)是否有可能使用C#WCF WebHttpBinding創建會話(如php會話)?
3
A
回答
4
WCF支持會話,但是它需要一些安全綁定,這個環節應該解釋:
http://social.msdn.microsoft.com/Forums/is/wcf/thread/7185e8b7-d4e5-4314-a513-ec590f26ffde
你可以自己實現一個會話管理器,一些維護會話列表的靜態類。每個會話都可以有一個'System.Timers.Timer'來指定會話超時,然後掛接一個事件處理程序,以便在會話計時器到期時被調用。
當發生這種情況時,會話管理器可以處理該會話,或者如果使用Guid(會話ID)作爲參考調用會話,則可以重置該定時器以保持會話存活。
在cookie中(這最有可能是會話ID),你可以用這樣的方法來獲取和設置請求的cookie方面:
/// <summary>Gets a cookie value from cookies for given key.</summary>
/// <param name="cookieKey">The key for the cookie value we require.</param>
/// <returns>The cookie value.</returns>
/// <exception cref="KeyNotFoundException">If the key was not found.</exception>
private string GetCookieValue(string cookieKey)
{
string cookieHeader = WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Cookie];
string[] cookies = cookieHeader.Split(';');
string result = string.Empty;
bool cookieFound = false;
foreach (string currentCookie in cookies)
{
string cookie = currentCookie.Trim();
// Split the key/values out for each cookie.
string[] cookieKeyValue = cookie.Split('=');
// Compare the keys
if (cookieKeyValue[0] == cookieKey)
{
result = cookieKeyValue[1];
cookieFound = true;
break;
}
}
if (!cookieFound)
{
string msg = string.Format("Unable to find cookie value for cookie key '{0}'", cookieKey);
throw new KeyNotFoundException(msg);
}
// Note: The result may still be empty if there wasn't a value set for the cookie.
// e.g. 'key=' rather than 'key=123'
return result;
}
/// <summary>Sets the cookie header.</summary>
/// <param name="cookie">The cookie value to set.</param>
private void SetCookie(string cookie)
{
// Set the cookie for all paths.
cookie = cookie + "; path=/;" ;
string currentHeaderValue = WebOperationContext.Current.OutgoingResponse.Headers[HttpResponseHeader.SetCookie];
if (!string.IsNullOrEmpty(currentHeaderValue))
{
WebOperationContext.Current.OutgoingResponse.Headers[HttpResponseHeader.SetCookie]
= currentHeaderValue + "\r\n" + cookie;
}
else
{
WebOperationContext.Current.OutgoingResponse.Headers[HttpResponseHeader.SetCookie] = cookie;
}
}
只需設置cookie來像「的sessionId = {myGuidHere}」。
我希望無論如何幫助..對不起,我寫了更多的示例代碼,因爲我正在爲客戶寫它。
peteski
1
如果你只是想與cookies工作,已經的WebHttpBinding但has that capability它默認是關閉的。我不熟悉PHP會話提供的其他功能,但由於WebHttpBinding構建在無會話的HTTP請求/響應模式之上,因此您必須在答案中將自己作爲@ peteski22草圖進行展示。
相關問題
- 1. PHP沒有創建會話
- 2. 會話創建在WCF
- 3. WCF會話是否安全?
- 4. 是否有可能在JavaScript中創建會話變量?
- 5. 是否有可能在視圖中創建會話在asp.net mvc?
- 6. 如何使用PHP創建會話?
- 7. 用會話php創建cookie?
- 8. PHP會話創建者ID
- 9. 創建會話
- 10. PHP登錄會話創建
- 11. wcf(webhttpbinding)通過jquery調用 - asp.net會話沒有填充
- 12. WCF會話 - ASP.Net會話
- 13. 使用jQuery創建php會話
- 14. 創建會話
- 15. Php會話不能正確創建
- 16. HttpContext.Current.Cache是否可用於所有會話
- 17. Django創建會話
- 18. Tokbox未能創建會話
- 19. 在C#中創建會話#
- 20. PHP會話是否安全?
- 21. 會話無效並創建新會話
- 22. 將php會話移至redis。是否有可能不會丟失現有會話數據?
- 23. 是否有可能實現PHP會話處理程序與arangodb
- 24. 是否有可能「過度使用」會話變量?
- 25. 是否有可能使用LINQ獲取SQL Server會話ID?
- 26. 如何使用會話ID創建會話對象?
- 27. REST - 創建會話
- 28. 舊會話超時後創建會話
- 29. 如何使用PHP創建不可預測的Cookie會話ID
- 30. ASP.net:是否有可能從會話ID手動初始化會話
這不是回答這個問題嗎? :( – peteski 2011-06-23 16:16:18