Azure Worker角色内部异常'其中一个请求输入超出范围。'

时间:2012-09-03 17:19:36

标签: c# azure azure-worker-roles azure-table-storage

我正在调用我的辅助角色中的CloudTableClient.CreateTableIfNotExist方法,并且我得到一个异常,其内部异常是“其中一个请求输入超出范围。”

我做了一点研究,发现这是因为将表命名为非法表名,但是,我已经尝试过将我的表命名为几个不同的名称而且都没有成功。我尝试过的一些表名是:

  • 例外
  • exceptioninfo
  • listoferrors

所有这些都失败并出现同样的错误。

修改

以下是我用来创建表格的代码:

    public static void InitializeTableStorage()
    {
        var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting(Constants.StorageConnectionString));
        // Retrieve storage account from connection-string
        // Create the table client

        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

        // Create the table if it doesn't exist
        string tableName = ExceptionsTableName;
        tableClient.CreateTableIfNotExist(tableName);
    }

这是错误输出的HTTP请求:

请求:

GET https://<account>.table.core.windows.net/Tables('exceptioninfo') HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 2.0;NetFx
x-ms-version: 2011-08-18
x-ms-date: Mon, 03 Sep 2012 21:54:20 GMT
Authorization: SharedKeyLite <AccountName>:aBcDeFgAbCdEfGhIjKlMnOpQrStUba+jKlMn/DqrsTu=
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
Host: <account>.table.core.windows.net
Connection: Keep-Alive

<account>全部为小写,<AcountName>为驼峰(如果这意味着什么) 以下是回复:

HTTP/1.1 400 One of the request inputs is out of range.
Content-Length: 343
Content-Type: application/xml
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: abcdefgh-ijkl-44ed-9ff2-3d07df99c266
Date: Mon, 03 Sep 2012 21:54:03 GMT


<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code>OutOfRangeInput</code>
  <message xml:lang="en-US">One of the request inputs is out of range.
RequestId:abcdefgh-ijkl-44ed-9ff2-3d07df99c266
Time:2012-09-03T21:54:03.6716225Z</message>
</error>

我使用相同的CloudStorageAccount创建了队列和Blob,并且已经成功。

尝试在azure中创建表时是否还有其他原因可以获取OutOfRange异常?

2 个答案:

答案 0 :(得分:3)

我找到了。

查看我从成功的队列请求和失败的表请求中获得的HTTP请求和响应,似乎帐户名称有任何大写字母,一切都失败。

要解决此问题,我将帐户名称更改为小写,一切正常

答案 1 :(得分:0)

存储表中OutOfRangeInput HTTP 400错误的另一个原因是帐户参数不正确。当我忘记修复cscfg文件并使用

部署时,我发现了错误
<Setting name="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=TODO;AccountKey=TODO" />