asp.net – 403从WindowsAzure.Storage生产错误
|
我有一个使用 WindowsAzure.Storage API v3的WebForms应用程序.它在开发和一个生产环境中工作正常,但是我正在推出一个新的实例,任何调用Azure Blob Storage的代码给我一个403错误. 我一直在玩这个一段时间,并且在Blob Storage的任何一个电话都失败了,所以我不会显示我的代码,我会显示我的堆栈跟踪: [WebException: The remote server returned an error: (403) Forbidden.] System.Net.HttpWebRequest.GetResponse() +8525404 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync(RESTCommand`1 cmd,IRetryPolicy policy,OperationContext operationContext) +1541 [StorageException: The remote server returned an error: (403) Forbidden.] Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync(RESTCommand`1 cmd,OperationContext operationContext) +2996 Microsoft.WindowsAzure.Storage.Blob.CloudBlobContainer.CreateIfNotExists(BlobContainerPublicAccessType accessType,BlobRequestOptions requestOptions,OperationContext operationContext) +177 ObsidianData.Azure.Storage.GetContainer(CloudBlobClient client,Containers targetContainer) in D:DevnSourceObsidianSourceObsidianDataAzureStorage.vb:84 ObsidianWeb.Leads.HandleListenLink(String fileName,HyperLink link) in D:DevnSourceObsidianSourceObsidianWebBdcLeads.aspx.vb:188 ObsidianWeb.Leads.LoadEntity_ContactDetails(BoLead lead) in D:DevnSourceObsidianSourceObsidianWebBdcLeads.aspx.vb:147 ObsidianWeb.Leads.LoadEntity(BoLead Lead) in D:DevnSourceObsidianSourceObsidianWebBdcLeads.aspx.vb:62 EntityPages.EntityPage`1.LoadEntity() +91 EntityPages.EntityPage`1.Page_LoadComplete(Object sender,EventArgs e) +151 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint) +4018 这是我试过的 >在这种环境中失败的AzureStorageConnectionString肯定在生产中有效 有任何想法吗?这应该是使用端口80或443,对吗?所以应该没有办法这样的网络问题.让我知道,如果这是错的. >工作生产机器是Azure VM(具有IIS 7.5的Server 2008 R2) 更新:有人要求看代码.好吧,我写了一个名为Azure.Storage的类,它只是抽象出我的云存储代码.我们没有打电话给Storage.Exists,所以这里是该类感觉相关的部分: Public Shared Function Exists(container As Containers,blobName As String) As Boolean
Dim Dir As CloudBlobContainer = GetContainer(container)
Dim Blob As CloudBlockBlob = Dir.GetBlockBlobReference(blobName.ToLower())
Return Blob.Exists()
End Function
Private Shared Function GetContainer(client As CloudBlobClient,targetContainer As Containers)
Dim Container As CloudBlobContainer = client.GetContainerReference(targetContainer.ToString.ToLower())
Container.CreateIfNotExists()
Container.SetPermissions(New BlobContainerPermissions() With {.PublicAccess = BlobContainerPublicAccessType.Blob})
Return Container
End Function
Private Shared Function GetCloudBlobClient() As CloudBlobClient
Dim Account As CloudStorageAccount = CloudStorageAccount.Parse(Settings.Cloud.AzureStorageConnectionString())
Return Account.CreateCloudBlobClient()
End Function
…容器只是一个容器名称枚举(有几个): Public Enum Containers
CallerWavs
CampaignImports
Delve
Exports
CampaignImages
Logos
ReportLogos
WebLinkImages
End Enum
…是的,他们有大写字符,这会导致问题.一切都出来之前被迫小写. 此外,我确实验证了正确的AzureConnectionString从我的设置类中出来.再次,我尝试了其他一些工作.这个也在其他地方工作! 解决方法请检查有问题的服务器上的时钟.除了不正确的帐户密钥,如果服务器上的时间与存储服务器上的时间不同步,则还可以获取403错误(允许或占用/ – 15分钟偏差).(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何从相同的解决方案的MVC项目调试Web API项目
- ASP.NET登录/成员资格 – 如何注销?
- 有没有替代ASP.NET的C#web开发?
- asp.net-mvc – MvcContrib.MVC3-ci和Mvc.Contrib NuGet包之
- 如何在ASP.Net项目中包含jQuery?
- 在ASP.NET中使用Visual Studio发布功能有什么好处?
- asp.net-web-api – WebAPI 2.2不支持substringof函数
- asp.net-mvc-3 – 如何将MVC3中的HTML和C#代码与Razor混合?
- 使用ASP.net MVCJQuery将HTML标签(代码)作为字符串发布
- 如何使用ASP.NET解析JSON字符串?
- asp.net-mvc-5 – Windows身份验证在ASP.NET MVC
- ASP.NET Membership API强制更改密码
- asp.net-mvc – 如何在ASP.NET MVC 3应用程序中处
- asp.net-mvc-4 – 使用WebAPI进行搜索
- asp.net – 使用Razor有点像回到经典的asp
- asp.net-mvc – ASP.net MVC DropDownList预选项
- asp.net-mvc – 如何继承ASP.NET MVC控制器并仅更
- ASP.NET Forms身份验证超时
- 析构函数何时在ASP.NET中调用C#类?
- asp.net-mvc – 用于MVC 3的Castle Windsor依赖关
