我的 Azure 存储帐户在文件共享中存储了文本文件。
在视图中,用户选择一个文件进行“处理”,我的 JavaScript 例程将 sas (.accessibleUri) 传递给控制器函数(即函数 ProcessDataFile)。
Controller 函数从查询 (Request.Url.Query) 中获取 sas。
那么如何在 Controller 函数中打开和读取文件,以便处理它的内容呢?我试过了:
Dim file As New CloudFile(New Uri(fileSasUri(1)))
ViewBag.ShowMe = file.DownloadText()
但是,这会引发异常:
ErrorMessage Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(404)未找到。---> System.Net.WebException:远程服务器返回错误:(404)未找到。在 System.Net.HttpWebRequest.GetResponse() 在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) --- 内部异常堆栈跟踪结束
这是SAS。注意最后的 ' 是因为我想确保字符串的前面或后面没有空格问题。
我的视图中包含允许用户下载文件的功能,只需单击“下载”超链接即可。我知道这就是 SAS 的优势所在:它使用户能够从视图(客户端页面)下载文件。
理所当然地,我应该能够让控制器函数做同样的事情(访问文件以获得读取能力,以便我可以处理它的内容)。
但是,在这一点上,我正在考虑简单地使用文件名,而是使用我的 AzureStorage 类来访问文件,从头再来(在第二次旅行中)。但我真的很想使用已经分配的 SAS 令牌,而不是重新发明轮子。