我最近在与实际网站相同的服务器上设置了我的个人网站的新实例。新实例是一个“最新”配置,因此它具有我正在开发的最新版本的所有新功能。最新版本我已经将目标框架从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,但仍然会导致同样的问题。此外,无论访问者是否登录,这似乎都会发生,而不仅仅是在成员页面上。
答案 0 :(得分:1)
HttpContext.Current.User
或user.ProviderUserKey
为null
。
我猜这个前者。第39行是哪一行?
此外,是否有用户登录?
答案 1 :(得分:0)
您为IIS安装了哪些身份验证模型?默认情况下,它只是匿名的,可以将HttpContext.Current.User设置为null。