我開始認爲這是一個錯誤,但我不確定。這是我的情況。CloudBlobClient.BaseUri爲什麼添加一個尾部斜線(有時)?
設置信息
我有一個網站,允許上傳到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);
然後手頭
獲得這樣
this.cloudBlobClient = this.cloudStorageAccount.CreateCloudBlobClient();
問題向雲BLOB客戶參考這是我開始得到不同的結果。
如果我使用存儲模擬器端點(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/
。
注意最後的斜線。爲什麼不是在使用存儲模擬器時出現?或者爲什麼是它使用真實帳戶時出現?
更新
我通過從網絡配置設置newing了一個開放的階梯,這是每一種情況下
{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
無關。我已經適當地更新了標籤。
燦你不使用URI類來返回'AbsolutePath',它應該返回一個沒有尾部的字符串'/' – MethodMan 2013-03-26 20:51:33
Negative。 '新的CloudStorageAccount'所需的參數是憑證+ uris – awbergs 2013-03-26 20:53:43
受傷的部分是,即使輸入的格式相同(其初始化時沒有結尾的斜槓),輸入時的行爲也會不同。如果它是一致的,並且總是添加一個結尾斜槓,我不會爲它處理問題。 – awbergs 2013-03-26 20:59:47