私は、.Net 2.0 フレームワークを対象とした VS2010 で記述された 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) では問題なく動作しますが、サーバーでは壊れます。サーバー上でデバッグできないため、スタック トレースに依存してエラーを表示しています。
スタックトレースは私に与えます
[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 アプリが実行されているため、サーバー バージョンを置き換えることはできません。