これはバグだと思い始めていますが、よくわかりません。これが私の状況です。
セットアップ情報
Azure Storage Blobへのアップロードを許可するWebサイトがあり、エンドポイントはWeb構成で指定されています。基本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を使用しているときになぜ存在するのですか?
アップデート
Web構成設定から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
です。タグを適切に更新しました。