4

我对 Windows Azure 非常陌生,并且正在对其进行修改以了解它是如何工作的。为了使事情尽可能简单,我正在尝试部署由 VS 2012 Express for web 生成的默认 MVC 4 模板。我创建了一个新项目 - Azure 云服务。我选择了一个 MVC 4 Web 角色。这样就创建了一个漂亮的小 asp.net 应用程序,其中包含主页、关于和联系页面,以及用于注册和登录的链接。我只想将此站点部署到 Azure 并查看它在云上的工作。

但是,成员资格似乎不适用于 azure。应用程序的页面显示正确。但是,当我单击“注册”链接时,它不会将我带到输入新用户名和密码的页面。我也不相信在任何地方都会生成成员资格表。

考虑到这有多简单,我想我一定在某个地方犯了一个愚蠢的错误。如果有人可以帮助我,我将不胜感激。

另外,作为记录,我注意到如果我在 VS2012 Express 中创建一个独立的 MVC 4 项目(而不是具有 mvc 4 Web 角色的 Windows Azure 云服务项目),那么当我右键单击该 MVC4 项目并选择发布它,它允许我使用连接字符串指定一个 sql 数据库。更重要的是,一旦它发布到 Azure,会员资格就可以完美运行。我可以创建用户帐户并登录。如果我使用 azure 门户检查我的 SQL Azure 数据库,我可以看到在那里创建的新成员资格表。

但是,当我尝试使用 MVC4 webrole 发布 Windows Azure 云服务时,我看不到任何选项可以为 azure 项目提供任何类型的连接字符串。也许这就是会员不起作用的原因......因为没有与网络角色链接的数据库......但我不知道如何指定它。我的印象是,将独立的 MVC4 项目发布到 Azure,和发布带有 MVC4 Web 角色的 Azure 云服务是完全一样的,如果我错了,请纠正我。无论哪种方式,我都应该能够看到我的 mvc 4 Web 角色的成员资格功能。

以下是重新创建我所拥有的步骤。基本上它都是默认的东西:

  1. 在 VS2012 Express File -> New Project -> 'Windows Azure Cloud Service' 中创建一个新项目。

  2. 在下一个屏幕上添加一个 ASP.NET MVC 4 Web 角色给它。

  3. 在随后的屏幕上选择“Internet 应用程序”。

这 3 个步骤创建了一个新项目。它在本地运行得很好。现在我试着把它放在云端。

  1. 在解决方案资源管理器中右键单击 Windows azure 项目,然后选择“发布”。

  2. 选择订阅(我已经有证书/凭证可以从 VS 发布到 azure,所以我选择了它)

  3. 在下一个屏幕上创建一个云服务(我将其命名为“garyazurecloudservice”)。

  4. 接受发布向导中的所有默认设置,然后单击发布。

发布过程需要几分钟时间。可以在http://garyazurecloudservice.cloudapp.net/查看 Web 应用程序。

主页、关于和联系页面都正确显示。但是,当我单击右上角的“注册”链接时,我看到了一个具有正确布局模板的网页,但出现了一个红色错误,上面写着:“错误。处理您的请求时发生错误。”

我试图在 Azure 上创建一个 SQL 数据库,但我看不到任何方法可以将此角色连接到它。可能这就是问题所在?或者也许它完全是另外一回事。如果有人能告诉我出了什么问题,我将不胜感激。

我花了一整天的时间在谷歌上搜索并转圈,但没有成功。感谢您提供任何帮助。加里

4

1 回答 1

3

您是对的,您网站的 Membership 部分在 Azure 上运行时无法在后台创建 SQL 表,这只是因为这些表所在位置的问题。

请记住,Azure 托管空间与传统托管不同,因为您的站点将存在于虚拟机上,如果第一个虚拟机遇到问题,文件将被复制到另一个虚拟机。此外,如果您要调用第二个“服务器”来托管您的网站,以应对负载,可能会发生什么?那么这些表将在哪里,第二个虚拟机如何知道如何访问第一个?

答案是创建一个 SQL Azure 数据库,将您的表上传到那里,然后您将拥有一个永久位置,供 1、2 或 1000 个运行您的网站的“服务器”访问您的数据的中央数据库存储库。

我知道在您的示例中,它应该只是“工作”,并且我在某种程度上同意,但是您在本地计算机上或现有(传统)Web 主机上运行的应用程序与 Azure 工作模型完全不同。

关于您关于 SQL Azure 设置如何工作的问题,大概您是通过门户网站或 www.windowsazure.com 网站创建的?如果是这样,那么您应该能够从那里查看和管理您的 SQL Azure 数据库,包括访问连接字符串部分,您可以将这些复制并粘贴到您的 MVC4 应用程序的 web.config 文件中。从那里,您可以像使用其他数据库一样使用此数据库。

我希望这一切都会有所帮助 - Azure 曾经是一只美丽的野兽。

于 2012-12-28T07:43:22.953 回答