Asp.net mvc 3 从webrole接收MVC控制器中的数据

Asp.net mvc 3 从webrole接收MVC控制器中的数据,asp.net-mvc-3,model-view-controller,azure,azure-web-roles,Asp.net Mvc 3,Model View Controller,Azure,Azure Web Roles,我了解如何在MVC架构中在Web、工作人员角色和流程之间进行通信 我的问题是,在我以web角色从表中查询数据之后,MVC中的控制器如何将这些数据放到视图中 我尝试在webrole中使用全局静态变量,在其中填充数据,但当我从控制器访问静态变量时,它只返回“null”。为什么我会得到一个空值 谢谢。我们讨论的是一个应用程序,它的MVC部分托管在一个工作者角色中,并从查询表存储的web角色获取数据?或者我们在这里讨论的是一个ASP.NET MVC应用程序,它托管在一个web角色中 由于并发性问题,静态

我了解如何在MVC架构中在Web、工作人员角色和流程之间进行通信

我的问题是,在我以web角色从表中查询数据之后,MVC中的控制器如何将这些数据放到视图中

我尝试在webrole中使用全局静态变量,在其中填充数据,但当我从控制器访问静态变量时,它只返回“null”。为什么我会得到一个空值


谢谢。

我们讨论的是一个应用程序,它的MVC部分托管在一个工作者角色中,并从查询表存储的web角色获取数据?或者我们在这里讨论的是一个ASP.NET MVC应用程序,它托管在一个web角色中

由于并发性问题,静态变量根本不是一个好主意

在场景1中,您如何与web角色通信?直接通过web服务调用

您只需从控制器调用服务或将调用委托给另一层,然后将此数据放入模型中,然后由相应的视图显示

您是否尝试过使用[azure local dev env][1]在本地调试此应用程序

[1] :?或者您是否使用真正的azure基础架构?您确定要从查询中获取数据吗?也许这个问题是错误的?您是否观察到任何例外情况


我们需要更多信息来帮助您

好的,如果您使用存储客户端,实现如下:

  • 创建您的模型: public class MyEntity : Microsoft.WindowsAzure.StorageClient.TableServiceEntity { public MyEntity() { PartitionKey = DateTime.UtcNow.ToString("MMddyyyy");

            RowKey = string.Format("{0:10}_{1}",
                DateTime.MaxValue.Ticks - DateTime.Now.Ticks, Guid.NewGuid());
        }
    
        // Define the properties.
        public string Title { get; set; }
        public string Name { get; set; }
    }
    
    }

  • 2.定义上下文类:

    public ActionResult Index() { var context = new MyDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); var results = from g in context.GetMyEntity where g.PartitionKey == DateTime.UtcNow.ToString("MMddyyyy") select g; return View(results.FirstOrDefault()); } 公共类MyDataContext:TableServiceContext { 公共MyDataContext(字符串基地址, StorageCredentials(凭据) :base(基地址、凭据) { } 公共可查询的GetMyEntity { 得到 { 返回此.CreateQuery(“MyTableName”); } } }
  • 实施控制器操作方法:
  • 公共行动结果索引() { var context=新的MyDataContext(storageAccount.TableEndpoint.AbsoluteUri,storageAccount.Credentials); var results=来自context.GetMyEntity中的g 其中g.PartitionKey== DateTime.UtcNow.ToString(“MMddyyyy”) 选择g; 返回视图(results.FirstOrDefault()); }
    这只是参考代码,非常难看,很难正常工作,但它仍然提供了一个示例,说明如何在MVC项目中查询表存储

    我正在实现第二个场景,ASP.NETMVC部分托管在Web角色中。webrole从表存储中查询数据。我在debug中检查了它,是的,我能够查询并获得正确的数据。嗨,数据读取部分是在Webrole中为我的应用程序在Run()函数中完成的。如果我在ASP.net MVC的控制器中实现数据读取部分,webrole将做什么?我的第二个问题是,我必须每10秒查询一次表以获取最新数据。如何从控制器执行此操作?谢谢,我不太清楚你所说的Run()函数是什么意思。Web角色是Web应用程序的一种托管环境。您可以将以Web角色托管Web应用视为将Web应用部署到虚拟机的IIS中。Microsoft正在为您执行托管部分。因此,您的Web应用程序正在Web角色内部运行,这就是Web角色所做的。关于第二个问题:例如,您可以在视图中实现一个JavaScript函数,并每10秒异步调用一次控制器。 public ActionResult Index() { var context = new MyDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials); var results = from g in context.GetMyEntity where g.PartitionKey == DateTime.UtcNow.ToString("MMddyyyy") select g; return View(results.FirstOrDefault()); }