0
我有一個web應用程序有2個實例作爲默認值,並從資源管理器,我可以看到有兩個實例。 然而,在Global.asax中的代碼,我有這樣的代碼:蔚藍的web應用程序多個實例混淆
public class LogEntity : TableEntity
{
public LogEntity(string partitionKey, string rowKey)
{
this.PartitionKey = partitionKey;
this.RowKey = rowKey;
}
public LogEntity() { }
public string Submitter { get; set; }
}
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Random ran = new Random();
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
var tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("logs");
table.CreateIfNotExists();
var key1 = ran.Next();
var machineName1 = Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID");
LogEntity log1 = new LogEntity(Environment.MachineName + ":" + machineName1 + ":" + key1.ToString(), "instance started");
TableBatchOperation batchOperation1 = new TableBatchOperation();
batchOperation1.Insert(log1);
table.ExecuteBatch(batchOperation1);
}
}
但是,從我的Azure Table中的日誌,我只能看到一個生成的日誌條目,它總是從同一個實例。
這是否意味着當我有多個實例時,只有一個實例會調用application_start?我認爲所有實例都應該在獨立運行時啓動application_start。但是,我的日誌似乎與我的理解矛盾。
UPDATE
我發現,記錄到Azure Table中的代碼。我期待的是,由於有兩個實例,我應該看到在天藍色表中創建的兩個日誌條目。但是,總是隻有一個條目。
您可以分享您在執行應用程序啓動時執行的代碼嗎?請用代碼更新您的問題。 –
謝謝!什麼是你試圖插入的實體的PartitionKey/RowKey?我沒有看到你的代碼。如果你也可以包含'LogEntity'的代碼,它也會有所幫助。 –
的partitionKey鍵包含實例ID和機器名,所以應該給我不同的條目針對不同的情況下 – daxu