[英]Asp.net static object behaviour
我將以下課程作為asp.net應用程序的一部分。
public sealed class SomeClass
{
private static string appId = Guid.NewGuid().ToString();
public static ReadSomethingFromDb(){}
public static WriteSomethingToDb(){}
}
同一應用程序池中有多個應用程序實例,並且它們都訪問同一數據庫。 我希望由上述類執行的操作唯一地綁定到執行該操作的實例,因此要使用appId。 因此,將記錄添加到數據庫將例如包含名稱,地址和appId。 出於討論目的,已對此進行了簡化。
假設我有兩個實例在mysite.a和mysite.b上運行,則上述類將生成兩個不同的向導。
我的問題是mysite.a有時會產生多個GUID,這是意外的。
先感謝您
這將為每個AppDomain
獲取一個新的Guid
; 每當出現以下情況,您將擁有新的AppDomain
:
簡而言之,這不是證明一個應用程序相同的非常健壯的方法(盡管它清楚地表明了不同的應用程序)。
為什么不只將站點路徑或IIS名稱之類的內容用作標識符?
在各種情況下都會創建一個新的AppDomain。 例如,當web.config更改時。 當時,沒有為原始AppDomain安排新的請求; 並將所有新請求發送到新請求。
在過渡期間,兩個AppDomain仍將運行。
在Marc發表評論后,我最終在應用程序啟動時使用了它,這似乎可行
string applicationId = Environment.MachineName+""
+System.Web.HttpContext.Current.Request.ApplicationPath;
這涵蓋了我,因為有可能會設置多台計算機以及取決於路徑的應用程序實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.