Dal*_*son 3 fiddler azure azure-table-storage
寻找调试Azure表存储非常令人沮丧.在我了解各种限制之前,尝试使用InvalidInput代码找到令人难以置信的DataServiceQueryException的原因很难说.
经过大量搜索后,http://blogs.msdn.com/b/partlycloudy/archive/2009/12/16/development-storage-logging.aspx上的帖子显示了如何打开日志记录.这将使用更多非常有用的信息填充错误日志文件.永久保留此日志记录可能不是一个好主意,每次遇到问题时检查此文件都不是理想的情况.
关于使用Fiddler查看实际请求和响应的帖子很多,但我无法正常使用.我已经将连接字符串配置为通过Fiddler代理连接(我必须手动将ipv4.fiddler主机名添加到hosts文件中,否则它将无法解析 - Fiddler应该自动执行此操作).我可以看到部署的连接,但不能查看任何查询的连接.我试过以管理员身份运行Fiddler,但仍然得到相同的结果.
为什么这么难?我错过了什么吗?是否有选项可以返回错误日志文件中记录的异常信息,而不是垃圾InvalidInput异常消息?任何想法为什么Fiddler不玩游戏?
通常,如果您尝试使用服务不支持的操作,则会收到无效输入错误消息.请记住,服务中没有完整的LINQ操作集(排序,最小值,最大值等)(但是,它们可以在本地计算).解决此问题的第一步应该是查看您正在尝试的实际操作.如果您使用的不是.Select()或.Where(),则很可能目前不支持它.
编辑:我写这篇文章后,遇到了类似的错误.由于我已经知道支持哪些操作,我想我会告诉你我用于排除故障的代码:
void Main()
{
var acct = CloudStorageAccount.DevelopmentStorageAccount;
var client = acct.CreateCloudTableClient();
var ctx = client.GetDataServiceContext();
ctx.IgnoreMissingProperties = true;
var table = "tl36f6e92d94954f168ade0be6a547c0ce";
//build query
var q = ctx.CreateQuery<Foo>(table)
.Where(e => e.RowKey.CompareTo(2) < 0) //this query fails
.Take(10);
//Dump URI to inspect
((DataServiceQuery)q).RequestUri.Dump();
//dump results
q.Dump();
}
[System.Data.Services.Common.DataServiceKey("PartitionKey", "RowKey")]
class Foo
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Whatever { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我把它放到了LINQPad(有史以来最好的工具)中,只看了一下URI.很明显,我正在进行的比较是期待一个字符串,并被比作整数.我当然简化了实际查询,但我的观点仍然存在.我一直使用这个工具来建模我的查询并检查实际发生的情况.
| 归档时间: |
|
| 查看次数: |
1931 次 |
| 最近记录: |