我开始认为这是一个错误,但我不确定。这是我的情况。
设置信息
我有一个允许上传到 Azure 存储 Blob 的网站,并且端点在 Web 配置中指定。基本网络配置包含
<blobEndpoint value="http://127.0.0.1:10000/devstoreaccount1" />
并且测试服务器 web 配置包含
<blobEndpoint value="https://myazureaccount.blob.core.windows.net" xdt:Transform="Replace" />
我有一个自定义配置处理程序来从 web 配置中检索值,就像这样
[ConfigurationProperty("blobEndpoint", IsRequired = true)]
public StringConfigurationElement BlobEndpoint
{
get
{
return (StringConfigurationElement)base["blobEndpoint"];
}
set
{
base["blobEndpoint"] = value;
}
}
我像这样获得对存储帐户的引用
StorageCredentialsAccountAndKey credentials =
new StorageCredentialsAccountAndKey(
CloudStorageAccount.CloudStorageAccountName,
CloudStorageAccount.CloudStorageAccountKey);
this.cloudStorageAccount = new CloudStorageAccount(credentials,
CloudStorageAccount.BlobEndpoint,
CloudStorageAccount.QueueEndpoint,
CloudStorageAccount.TableEndpoint);
然后像这样获取对云 blob 客户端的引用
this.cloudBlobClient = this.cloudStorageAccount.CreateCloudBlobClient();
手头的问题
这是我开始得到不同结果的地方。
如果我使用存储模拟器端点 ( http://127.0.0.1:10000/devstoreaccount1
) 并进行此调用
this.cloudBlobClient.BaseUri
返回值为http://127.0.0.1:10000/devstoreaccount1
但是,如果我使用我的实际帐户端点 ( https://myazureaccount.blob.core.windows.net
) 并进行相同的调用,则返回值为https://myazureaccount.blob.core.windows.net/
.
注意末尾的斜杠。为什么在使用存储模拟器 uri 时不存在?或者为什么在使用真实账户 uri 时会出现?
更新
我从网络配置设置中逐步更新了一个 Uri,这是每个案例的输出
{https://myazureaccount.blob.core.windows.net/}
AbsolutePath: "/"
AbsoluteUri: "https://myazureaccount.blob.core.windows.net/"
Authority: "myazureaccount.blob.core.windows.net"
DnsSafeHost: "myazureaccount.blob.core.windows.net"
Fragment: ""
Host: "myazureaccount.blob.core.windows.net"
HostNameType: Dns
IsAbsoluteUri: true
IsDefaultPort: true
IsFile: false
IsLoopback: false
IsUnc: false
LocalPath: "/"
OriginalString: "https://myazureaccount.blob.core.windows.net"
PathAndQuery: "/"
Port: 443
Query: ""
Scheme: "https"
Segments: {string[1]}
UserEscaped: false
UserInfo: ""
{http://127.0.0.1:10000/devstoreaccount1}
AbsolutePath: "/devstoreaccount1"
AbsoluteUri: "http://127.0.0.1:10000/devstoreaccount1"
Authority: "127.0.0.1:10000"
DnsSafeHost: "127.0.0.1"
Fragment: ""
Host: "127.0.0.1"
HostNameType: IPv4
IsAbsoluteUri: true
IsDefaultPort: false
IsFile: false
IsLoopback: true
IsUnc: false
LocalPath: "/devstoreaccount1"
OriginalString: "http://127.0.0.1:10000/devstoreaccount1"
PathAndQuery: "/devstoreaccount1"
Port: 10000
Query: ""
Scheme: "http"
Segments: {string[2]}
UserEscaped: false
UserInfo: ""
看来这实际上是Uri
课程的问题,与CloudBlobClient
. 我已经适当地更新了标签。