我正在嘗試找到使用會話變量的替代方法。在我的解決方案中,我有一個ASP.NET Web應用程序和控制檯應用程序引用的項目。這兩個應用程序都可以對數據進行更改,並且在做出更改時,將根據該行記錄進行更改的用戶的ID。替代會話變量
因此,如果它只是ASP.NET應用程序進行更改,它可以做類似myObj.LastUpdatedByID = Session["userid"]
。鑑於命令行應用程序需要進行更改並且沒有會話,我可以使用哪種替代方法,它具有ASP.NET中的會話作用域,但也可以在控制檯應用程序作用域中使用?
我曾看過MemoryCache,但似乎是ASP.NET中的應用程序級別。
我不想在傳遞用戶標識到每個調用的過程中下線。
會做類似於檢查一個HttpContext,如果有,從會話拉,如果沒有,從MemoryCahce拉?還是有更好的方法呢?
編輯: 用戶ID在控制檯應用程序中具體設置取決於正在執行的操作。控制檯應用程序用於自動化流程,並執行許多操作。因此,例如,發送電子郵件過程將由用戶標識1執行,刪除舊文件過程將由用戶標識2執行。在某些實例中,用戶標識將設置爲上次創建的用戶標識該行數據的變化。
編輯: 一些示例代碼(爲簡潔起見剝離)。你可以看到我使用這裏的MemoryCache,這我理解是應用廣泛,因此無法使用在ASP.NET應用程序:
public class Base(
{
private int auditID = -1;
public int AuditID
{
get
{
if (this.auditID <= 0)
{
ObjectCache memCache = MemoryCache.Default;
this.auditID = ((int)memCache["CurrentUserID"]);
}
return this.auditID;
}
}
}
public class MyObject : Base
{
public int LastUpdatedByID { get; set; } = 0;
public bool Save()
{
bool b = false;
this.LastUpdatedByID = this.AuditID;
//Call to DB here...
return b;
}
}
是怎樣一個用戶在控制檯應用程序認證? – CodeCaster
@CodeCaster我已添加編輯 – TechyGypo
顯示更新對象的代碼。一個類庫不應該引用System.Web。 – CodeCaster