3

我最近在与实际站点相同的服务器上设置了我的个人网站的新实例。新实例是“最新”配置,因此它具有我正在处理的最新版本的所有新功能。最新版本 我已将 Target Framework 从 2.0 切换到 3.5,这是与编译项目一样唯一真正重大的变化。

在所有成员页面和其他一些页面以及一些用户控件上,我调用了这两个项目中的一个或两个,并且每个都失败并导致Object reference not set to an instance of an object错误。但不是在每一页上!

    public static string CurrentUserName
    {
        get
        {
            string userName = "";
            if (HttpContext.Current.User.Identity.IsAuthenticated)
                userName = HttpContext.Current.User.Identity.Name;
            return userName;
        }
    }

    public static string CurrentUserID
    {
        get
        {
            string userID = "";
            if (HttpContext.Current.User.Identity.IsAuthenticated) //Line 39
            {
                MembershipUser user = Membership.GetUser();
                userID = user.ProviderUserKey.ToString();
            }
            return userID;
        }
    }

堆栈跟踪为:

[NullReferenceException: Object reference not set to an instance of an object.]
   isClasses.BizObjects.get_CurrentUserID() in C:\My Dropbox\Trunk\Classes\BizObjects.cs:39
   TheImageStore_Profile..ctor() in w:\dev\Member\Profile.aspx.cs:9
   ASP.member_profile_aspx..ctor() in c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\faba6118\7249af47\App_Web_profile.aspx.48943a5b.w8t4pvz5.0.cs:0
   __ASP.FastObjectFactory_app_web_profile_aspx_48943a5b_w8t4pvz5.Create_ASP_member_profile_aspx() in c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\faba6118\7249af47\App_Web_profile.aspx.48943a5b.w8t4pvz5.2.cs:0
   System.Web.Compilation.BuildResultCompiledType.CreateInstance() +32
   System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +119
   System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +33
   System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) +37
   System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +307
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

但是请注意,这仅发生在 Server 2008 上的 IIS 7 中,该站点在 Visual Studio 2008 中运行良好。我什至将 IIS 中的主网站附加到该目录,并且它执行相同的操作。怎么可能发生这种情况,可能是什么原因?

只是为了好玩,我将目标框架改回 2.0,但它仍然导致同样的问题。此外,无论访问者是否登录,这似乎都会发生,而不仅仅是在会员页面上。

4

2 回答 2

1

要么HttpContext.Current.User要么user.ProviderUserKeynull

我猜是前者。第 39 行是哪一行?

另外,是否有用户登录?

于 2010-01-10T15:08:02.293 回答
0

您为 IIS 安装了哪些身份验证模型?默认情况下,只有匿名可用,并且可以将 HttpContext.Current.User 设置为 null。

于 2010-01-10T15:19:30.153 回答