Oli*_*son 21 c# connection-string azure azure-blob-storage
我有一个MVC4项目,我正在使用Azure网站预览运行.
我的问题是,当我将网站部署到azure时,我无法将blob上传到我的blob存储容器中,但是当我在本地调试时上传工作正常.
这是我在部署时获得的异常和堆栈跟踪,我尝试上传到容器:
找不到有效的帐户信息组合.在Microsoft.WindowsAzure.Storage.CloudStorageAccount.b__0(字符串ERR)在Microsoft.WindowsAzure.Storage.CloudStorageAccount.TryParse(字符串s CloudStorageAccount&accountInformation,Action`1误差)在Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(字符串的connectionString) at MyProj.Controllers.ImageController.Upload(ImageViewModel model)
具体来说,根据堆栈跟踪,它是失败的.Parse方法.
我用来连接blob存储的代码直接来自azure how-to文档:
string connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
Run Code Online (Sandbox Code Playgroud)
再次,当我在我的开发盒上本地运行时,这工作正常,我可以成功上传没有问题.但是它在部署时给了我这个错误,我尝试做同样的事情.
我猜测我的storageConnectionString在Web部署发布过程中被搞乱,但我不确定如何解决这个问题?
sco*_*ker 26
确保这一点
1)您正在使用正确的诊断协议(双击角色 - >配置选项卡 - >选择配置 - >"诊断"下,单击省略号 - >尝试单击确定...如果它给出错误您必须使用https,将连接字符串更改为https)
和
2)不允许使用空格......即
UseDevelopmentStorage=true;DevelopmentStorageProxyUri=https://127.0.0.1
代替
UseDevelopmentStorage=true; DevelopmentStorageProxyUri=https://127.0.0.1
(注意分号后的空格)
在"设置"选项卡上检查所有连接字符串中的https和空格
- -编辑 - -
实际上把"https"搞砸了.Worker角色会抛出一个异常("Handshack因意外的数据包格式而失败.")然后在未知和被破坏之间循环.删除了"https"中的"s",并确保没有空格和瞧.
And*_*eas 16
获取CloadStorageAccount实例的另一种方法是执行此操作
StorageCredentials credentials = new StorageCredentials(accountName, accountKey);
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
Run Code Online (Sandbox Code Playgroud)
这应该可以帮助任何有此解析问题的人.
ast*_*kov 15
将存储连接字符串存储在AppSettings中,而不是存储在ConnectionStrings部分中.并且,在这里粘贴实际的连接字符串将帮助我们(您可以为帐户密钥添加*).
我收到此错误是因为在Blob SAS URL之前错过了前缀BlobEndpoint=:
错误的appsettings.json
{
"TestBlobWriter": {
"ConnectionString": "https://test.blob.core.windows.net/test-container?sp=*&st=*&se=*&spr=*&sv=*&sr=*&sig=*",
"ContainerName": "test-container"
}
}
Run Code Online (Sandbox Code Playgroud)
正确的appsettings.json
{
"TestBlobWriter": {
"ConnectionString": "BlobEndpoint=https://test.blob.core.windows.net/test-container?sp=*&st=*&se=*&spr=*&sv=*&sr=*&sig=*",
"ContainerName": "test-container"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19122 次 |
| 最近记录: |