【问题标题】:C# web application causes 404 error in Azure when deployed from one computer, but not from anotherC# Web 应用程序从一台计算机部署时在 Azure 中导致 404 错误,而不是从另一台计算机部署
【发布时间】:2011-08-31 09:10:09
【问题描述】:

我们使用 MVC3 和 Entity Framework 4.1 在 .Net Framework 4 上构建了一个 C# Web 应用程序。该应用程序在 Windows Azure 中运行,并针对 SQL-Azure 数据库工作。当我们部署应用程序时,我们遇到了一个有点奇怪的问题。

使用从我们的 svn 中签出的完全相同的代码,在一台计算机上通过 Visual Studio 部署应用程序时一切正常,但是,在另一台计算机上执行完全相同的操作会导致应用程序返回 404 错误,无论如何你试图达到什么控制器/动作。该应用程序在两台计算机上的云模拟器中运行顺畅。我们也尝试将应用程序打包到错误的计算机上,并通过 Azure 门户网站进行部署,但这也不起作用。

两台计算机都运行 Windows 7 64 位,安装了 Visual Studio 2010 Ultimate 和 Azure SDK。

关于为什么会这样的任何想法?

问候, 克里斯托弗

编辑: 使用 RDP(感谢您的提示!@Ben)我认为我们已经更接近解决方案了。在服务端,抛出如下异常:

Exception information: 
        Exception type: InvalidOperationException 
        Exception message: The pre-application start initialization method Start on type System.Web.WebPages.PreApplicationStartCode threw an exception with the following error message: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
       at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
       at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
       at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
       at System.Web.WebPages.PreApplicationStartCode.Start()

奇怪的是那个特定的 dll - Microsoft.Web.Infrastructure.dll 包含在我的 _bin_deployableAssemblies 文件夹中。

【问题讨论】:

  • 您确定其中一台机器没有本地更改吗?
  • 听起来部署只是在第二台计算机上以某种方式失败,并且您收到 404,因为尚未部署 Web 应用程序,因此没有控制器和操作。
  • 我们已经从工作计算机上的 repo 根目录进行了完整提交,然后在错误计算机上从我们的 svn 中重新签出了最新版本,因此它们正在运行代码的完全相同的版本 - 所以我看不到应该有任何本地更改。
  • @Ben - 根据 VS 和 web 门户,部署成功,并且角色在 Azure 中运行良好。
  • 网络角色是否启用了 RDP?您可以登录并检查所有内容是否已部署并正常。

标签: c# deployment azure


【解决方案1】:

我找到了解决方案。出于某种原因,一台计算机缺少一些必需的引用(Microsoft.Web.Infrastructure、System.Web,如我编辑的问题中的错误所示。我不知道两台计算机之间会有什么不同,因为我们使用完全相同的来源,但显然确实如此。

感谢@Ben 提供有关远程桌面的提示,这确实很有帮助。

对于那些对在 Azure 实例上使用远程桌面感兴趣的人,请阅读 Microsoft 关于该主题的精彩文章:http://msdn.microsoft.com/en-us/library/gg443832.aspx

【讨论】:

    【解决方案2】:

    我在 Azure webrole 实例上遇到此错误。确保将 Microsoft.Web.Infrastructure 引用添加到您的项目。

    但最重要的是查看基础架构参考的属性,并设置 Copy Local = True

    这将确保在部署时将丢失的 ref 与您的解决方案捆绑在一起。

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多