我将以下类作为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上运行了两个实例,上面的类会生成两个不同的guid。
我的问题是mysite.a有时会生成多个guid,这是出乎意料的。
提前谢谢
答案 0 :(得分:3)
每Guid
个新AppDomain
;无论何时,你都会有新的AppDomain
:
简而言之,这不是一种非常强大的方式来证明一个应用程序相同(尽管它明确表示不同的应用程序)。
为什么不将网站路径或IIS名称作为标识符?
答案 1 :(得分:2)
在各种情况下创建新的AppDomain。例如,更改web.config时。那时,没有为原始AppDomain安排新的请求;并且所有新请求都将发送给新请求。
在转换期间,两个AppDomain仍将继续运行。
答案 2 :(得分:1)
string applicationId = Environment.MachineName+""
+System.Web.HttpContext.Current.Request.ApplicationPath;
这涵盖了我,因为有可能进行多机器设置以及取决于路径的应用程序实例。