[英]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.