【发布时间】:2011-12-05 08:28:09
【问题描述】:
我有一部分用于将文本上传到 Azure blob 存储的代码。它使用CloudBlobClient.GetContainerReference().GetBlobReference().UploadText()。
string connectionString = RoleEnvironment.GetConfigurationSettingValue( "StorageConnectionString" );
CloudStorageAccount account = CloudStorageAccount.Parse( connectionString );
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer container = client.GetContainerReference( containerName );
container.CreateIfNotExist();
DateTime currentTime = DateTime.UtcNow;
String instanceId = RoleEnvironment.CurrentRoleInstance.Id;
int threadId = System.Threading.Thread.CurrentThread.ManagedThreadId;
String blobPath = String.Format( "error-{0}-{1}-{2}", currentTime.Ticks, instanceId, threadId );
container.GetBlobReference( blobPath ).UploadText( textToUpload );
到目前为止,代码运行良好。现在,我将该代码的调用添加到 ASP.NET MVC2 应用程序的各个位置以调试后者,并且代码静默不执行任何操作 - 没有异常,没有新的 blob,没有任何东西。如果我尝试获取
String justUploaded = container.GetBlobReference( blobPath ).DownloadText( textToUpload );
然后将结果发布到网页上 - 再次没有异常,字符串为空。如果我尝试获取
String uri = container.GetBlobReference( blobPath ).Uri.ToString();
再次没有异常,字符串为空。
同样的上传代码可以在包含 MVC 应用程序的同一网络角色的 OnStart() 内部正常工作。
写入 blob 存储不工作的可能原因是什么?我该如何解决这个问题?
【问题讨论】:
-
您在 Global.asax Application_Start 事件处理程序中有 Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher 方法调用吗?
-
@Yuriy Rozhovetskiy:现在我确实有,但没有帮助。
-
你是如何创建 CloudStorageAccount 实例的?
-
你能在你的问题中加入一些真实的代码吗?
-
@Yuriy Rozhovetskiy:我解析了连接字符串 - 添加了代码。
标签: .net asp.net-mvc windows iis azure