【问题标题】:Asp.net MVC5 WebRole after deployed to Azure Cloud, breaks on @Scripts.Render部署到 Azure 云后,Asp.net MVC5 WebRole 在@Scripts.Render 上中断
【发布时间】:2014-06-03 07:13:32
【问题描述】:

我有一个带有 Asp.Net MVC 5 Web 角色和面向 4.5.1 框架的 Azure SDK 2.3 的云服务;该网站在本地完美运行。 但是当我将它部署到 Azure 云服务时,我遇到了经典的空引用错误:

对象引用未设置为对象的实例。 异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

来源错误:

Line 9:      @Scripts.Render("~/bundles/jquery")

我的 BundleConfig.cs 很简单:

    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                     "~/Scripts/jquery-{version}.js",
                     "~/Scripts/knockout-{version}.js",
                     "~/Scripts/jquery.signalR-{version}.js",
                     "~/Scripts/modernizr-{version}.js"
                    ));

在 WebRole 上使用 Intellitrace 日志我可以看到这个错误:

文件监控的文件名无效 'E:\sitesroot\0\Scripts

在实例中远程输入我看到文件夹 Scripts 正是在该路径中。

删除@Script.Render 页面加载正常。 同一页面上的@Style.Render 有效。

我尝试在 Debug 模式和 Release 模式下部署,都在 Staging 中。

也试过在Web.config中改一下

compilation debug="true" and false

没有成功。 任何想法为什么会发生这种情况? 谢谢

【问题讨论】:

  • 是否部署了捆绑包中引用的所有文件(jquery、knout、jquery.signalR 和modernizr)?最低版本和非最低版本?
  • 是的,文件在那里,我还通过远程连接检查了实例,都在脚本文件夹中。我真的不知道它是什么!

标签: asp.net-mvc azure bundling-and-minification webrole


【解决方案1】:

经过几天的测试,我发现问题出在 WEBGREASE 包上。即使在新项目上更新它也会导致问题。现在卸载它并重新安装以前的版本解决了这个问题。

【讨论】:

  • 你是如何跟踪到 WebGrease 的 - 我遇到了同样的问题 - 升级了一系列包、MVC5、WeApi2 等,并且 WebGrease 在此过程中更新到 v 1.6 当我将 WebGrease 恢复到版本时1.5.2 成功了。我仍然想知道为什么,但感谢您的帮助
【解决方案2】:

尝试从 jquery 包中删除除 jquery 之外的所有内容。然后为依赖于 jquery 的脚本(knockout、jquery.signalR 和modernizr)创建一个新包,并在 jquery 包之后渲染它。

【讨论】:

  • 完成,没有任何变化,同样的错误,我还尝试创建一个全新的 MVC 项目作为具有个人身份验证的 WebRole,并且遇到相同的问题。一个没有身份验证的 MVC 项目,而是完美地部署和运行..
猜你喜欢
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多