1

我打开了一个现有的 ASP.NET MVC3 项目,该项目以前在安装了 Visual Studio 2012 的新建机器上运行良好。

我现在在以下代码中得到空异常。用户登录后,执行以下代码进行页面片段级访问。

在 WebViewPage.User 对象上引发 null 异常。但是,在调试模式下,我实际上可以检查对象的真实实例(见下图)

 public static class WebViewPageExtensions
 {
      public static bool HasAccess(this WebViewPage pg)
        {
            if (pg == null) throw new ArgumentNullException("WebViewPage is null");
            if (pg.User == null) throw new ArgumentNullException("WebViewPage User is null");              
            return pg.User.IsInRole(User.ACCESS_LEVEL_A) || pg.User.IsInRole(User.ACCESS_LEVEL_B);
        }
 }

注意:这可能与我的环境配置方式有关(可能是 web.config?),但不确定从哪里开始。事实上,发生这种情况的代码与在生产环境和以前的开发环境中运行的代码相同。

所有的引用仍然是指在 .NET 4.0 平台上运行的 ASP.NET MVC3 版本的框架。

检查

编辑:这是来自 Razer 视图的调用代码:

 @if (this.HasAccess()) {                 
        <div>
                HTML here
        </div>  
    }

有什么想法吗?

4

1 回答 1

1

请阅读链接http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815中的“安装 ASP.NET MVC 4 破坏 ASP.NET MVC 3 RTM 应用程序”部分。按照 setps“必需更新”更新您的 MVC 3 应用程序。
如果您没有注意到,MVC4 会随 VS2012 一起安装,这是记录在案的行为。

于 2012-10-04T21:46:11.170 回答