3

编辑:我想通了。差不多 :) 我解决了这个问题,但我发现了另一个问题。在此处记录解决方案。


我有一个试图部署到 Azure 的 MVC Web 角色。它不断从Starting > Initializing反弹。我进行了研究,发现了两个主要原因。

  1. 我正在使用的程序集之一没有Copy Local = True设置
  2. 诊断连接字符串错误。

我已经三次检查了我的诊断连接,它很好。我可以在 Worker Role 中使用完全相同的连接字符串,并且它启动得很好所以我认为问题与上面的 #1 有关。

这是一个标准的 MVC 项目,我向其中添加了一个 azure 部署项目,所以我猜我缺少一些“Azure Web 角色项目”会自动为我做的事情。我已经从项目上下文菜单中选择了“添加可部署程序集”选项,因此应该设置 MVC 位,对吗?

这是我的参考文献列表,突出显示的项目有Copy Local = true. 我缺一个吗?我还需要做什么才能部署它?是否有任何诊断工具可以帮助我解决问题?

更新:
我喜欢找到更多信息:)

因此,当我可以远程进入服务器时,我终于能够捕捉到它。我打开 IIS 并看到所有应该存在的东西。我试图在本地访问该站点,但出现此错误。该程序集包含在我的部署中,因此找不到它是没有意义的。似乎它正在尝试加载与打包的版本不同的版本。

无法加载文件或程序集“System.Web.WebPages”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

所以有(至少一个)我的错误.....但是为什么呢?该站点在 IIS express 中运行良好,在开发结构中运行良好。我在这里感觉自己像个菜鸟。我做错了什么?

在此处输入图像描述

4

5 回答 5

2

我参考了 System.WebPages 的 V2,但 bin_dependencies 里面有 V1。我不知道这是怎么发生的,但确保一切都在正确的版本上工作。

于 2012-04-20T14:19:02.823 回答
1

我想知道您使用的是哪个 MVC 版本。如果您使用 MVC 3 或 4,请将 CLR 运行时重定向到新版本的程序集。例如,对于 MVC 3:

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

如果您创建一个新的 MVC Web 角色,这将被自动配置。如果将现有 MVC 应用程序迁移到 Windows Azure,则需要手动配置它。

此致,

明旭。

于 2012-04-20T07:56:24.550 回答
0

您缺少一些直接或间接引用的程序集,这些程序集未打包,因为它们驻留在全局程序集缓存中,因此假定已提供。看看应该记录相同问题的这个答案和评论。

于 2012-04-20T05:34:44.013 回答
0

不确定这是否是您遇到的问题,但是...如果启用了会话状态,则 web.config 中的默认提供程序是 SQL Express(基于 2011 年 8 月的更新,其中角色模板现在使用所有通用提供程序)。由于 Windows Azure 上没有安装 SQL Express,这会导致 Web 角色启动问题。您需要将提供程序更改为 SQL Azure 或缓存。Nate Totten关于 Universal Provider 更新的博文对此进行了更多说明。

我在这里也回答了一个类似的问题......

于 2012-04-20T06:17:23.923 回答
0

当您使用 ASP.NET MVC (3) 时,您必须将其安装在 Azure 上。最简单的部署方法是使用简洁的功能“添加可部署依赖项”:

添加可部署的依赖项

当您右键单击 Web 应用程序项目(Web 角色本身,而不是云项目)时,您将找到此选项。然后只需选择 ASP.NET MVC:

在此处输入图像描述

此过程将在您的 Web 应用程序_bin_deployableAssemblies中创建一个文件夹。框架将知道如何处理它。

笔记

“添加可部署依赖项”是Visual Studio 2010 SP1的一部分。因此,如果您还没有升级到SP1,我强烈建议您这样做;)

于 2012-04-20T05:40:45.383 回答