System.Web.dll不同的版本给我在vb.net中的问题

时间:2013-02-20 00:11:21

标签: asp.net vb.net visual-studio-2010 dll

我有一个用VS2010编写的VB.NET Web应用程序项目,目标是.Net 2.0框架(不要问我知道)。我有一个带有导入语句的类

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中的c:\%WINDIR%\ assemblies中注册的System.Web.dll但我在服务器上的版本与本地机器上的版本不同

服务器上的版本是:2.0.50727.3053 我机器上的版本是:2.0.50727.3614

这可能是我问题的原因吗?有人能想出一个很好的排除故障的方法吗?服务器是Windows 2003,不知道我是否可以复制它的System.Web.dll并使用regasm在我的本地机器上进行测试?我无法替换服务器版本,因为在那里运行其他需要它的Web应用程序。

2 个答案:

答案 0 :(得分:1)

我不认为您的问题与DLL版本有任何关系。我认为使用Imports语句的方式无法正常工作。通常的做法是仅导入名称空间,而不导入类。因为异常消息提到了With块(当您导入类而不是命名空间时,您正在执行类似于with块正在执行的操作),我相信这是您的来源问题

试试这个:将您的导入更改为Imports System.Web。然后将会话引用为HttpContext.Current.Session

这将告诉您这是否是问题。为什么它在本地机器上运行正常而不在服务器上我没有任何建议。但首先要看看问题是否是问题的根源,然后再从中进行磨练......

答案 1 :(得分:0)

对于未来的读者,我的问题结果相当奇怪。在我的课程中,我无法从Session对象中获取所有内容。它虽然在代码隐藏页面中运行良好。我开始了一个新项目并手动复制了我的代码,它开始正常工作。我相信这是因为我在从网站转换为webapp时犯了一个错误。不确定根本原因是什么......