我有一个用 VS2010 编写的针对 .Net 2.0 框架的 VB.NET Web 应用程序项目(不要问我知道)。我有一个带有导入语句的类,上面写着
Imports System.Web.HttpContext
降低我尝试使用
Current.Session("username") = "user"
Current.Session("psswd") = "psswd"
Current.Session("dbName") = "database"
If (IsNothing(Current.Session("username")) Or IsNothing(Current.Session("psswd")) Or IsNothing(Current.Session("dbName"))) Then
Current.Response.StatusCode = 402
Else
' Do some stuff here
End if
它在我的个人机器(windows xp SP3)上运行良好,但在服务器上中断。我无法在服务器上调试它,所以我依靠堆栈跟踪来给我错误。
Stacktrace 给了我
[NullReferenceException: Object variable or With block variable not set.]
Microsoft.VisualBasic.CompilerServices.Container..ctor(Object Instance) +497860
Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack) +373
letter_main.Logon.login_user() in C:\VSProjects\letter_main\letter_main\Old_App_Code\Logon.vb:55
letter_main._Default.Page_Load(Object sender, EventArgs e) in C:\VSProjects\letter_main\letter_main\Default.aspx.vb:32
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +62
Logon.vb 中的第 55 行是“Current.Response.StatusCode = 402”行,如果它设法将值放入会话中,则它永远不会到达该行。我猜它没有?
所以我调查了两台机器上的 System.Web.dll,发现它们都在 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web 位置的 c:\%WINDIR%\assemblies 中注册.dll 但我在服务器上的版本与本地机器上的版本不同
服务器上的版本是:2.0.50727.3053 我机器上的版本是:2.0.50727.3614
这可能是我的问题的原因吗?谁能想到一个解决问题的好方法?服务器是windows 2003,不知道我是否可以复制它的System.Web.dll并使用regasm在我的本地机器上测试?我无法替换服务器版本,因为那里正在运行其他需要它的 Web 应用程序。