抛出了Microsoft.WindowsAzure.StorageClient.StorageClientException类型的异常

时间:2010-12-07 17:08:29

标签: c# azure

我正在尝试编写一个简单的程序来熟悉Azure。我在CreateTableIfNotExist(..)行上得到了上述异常。请帮忙。 这是代码:

    public ActionResult Index()
    {
        var client = CloudStorageAccount.DevelopmentStorageAccount.CreateCloudTableClient();

        var success = client.CreateTableIfNotExist("Messages");

        var svc = client.GetDataServiceContext();


        //"Messages" is the name of the table
        return View(svc.CreateQuery<Message>("Messages").AsTableServiceQuery());
    }

这是堆栈跟踪:

  

at Microsoft.WindowsAzure.StorageClient.Tasks.Task 1.get_Result() at Microsoft.WindowsAzure.StorageClient.Tasks.Task 1.ExecuteAndWait()      在Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImpl [T](Func 2 impl) at Microsoft.WindowsAzure.StorageClient.CloudTableClient.CreateTableIfNotExist(String tableName) at MvcWebRole1.Controllers.HomeController.Index() in C:\tests\AzureDemo\MvcWebRole1\Controllers\HomeController.cs:line 18 at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2个参数)      在System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func 1续)

另外,我在网页上看到它显示“资源未找到”。不确定它正在寻找什么资源。

2 个答案:

答案 0 :(得分:0)

您使用的是开发存储吗?如果是这样,我强烈建议您阅读Differences Between Development Storage and Windows Azure Storage Services

听起来您正在遇到开发存储独有的问题,在该问题中您无法查询从未包含任何实体的表:

  

在开发存储中,查询表中不存在的属性会返回错误。这样的查询不会在云中返回错误。

记录了一个dev存储解决方法here

  

[E]确保表存储知道对象的结构。

var query = from x in context.CreateQuery(VehicleTableName) select x;
var l = query.ToList();
var v = new Vehicle();
context.AddVehicle(v);
context.SaveChanges();
context.DeleteObject(v);
context.SaveChanges();

答案 1 :(得分:0)

好吧,我今天终于错过了这个错误。希望下面的信息可以帮助你们其他人。不知道我以前做错了什么,但我只是确定:

  1. 我独自离开了几天;)
  2. 该应用程序以 ADMIN 模式运行VisualStudio 2010。
  3. Azure项目(具有蓝色地球的项目)设置为启动对象。因此点击F5运行整个应用程序。
  4. 您的Compute Emulator和Storage Emulator已启动(请查看屏幕右下角的系统托盘)。
  5. 我很确定我之前收到错误时已经完成了所有这些工作,但我始终不能相信自己。

    希望这有帮助。

    感谢Steve Marx的nice demo codepdc video。真的帮助我学到了东西。