0

これは私を夢中にさせています!サーバーにasp.netアプリケーションがあります。サーバー上の GAC に配置されている 2 つの dll ファイルを参照します。リモートでデバッグできるように、pdb ファイルも GAC フォルダーに配置しました。

ここに私の問題があります:私が以下を呼び出すとき:

addToAbsenceList(e.Initials, a.StartDate, a.EndDate, a.Type.TypeId, vacationDays);

e.Initials に「OFR」という値が含まれていることがわかります。F11 を押して addToAbsenceList にジャンプすると、次のようになります。

addToAbsenceList(string initials, DateTime startDate, DateTime endDate, int AbsenceType, double duration)

変数 initials に値 NULL が含まれるようになりました。

この問題を修正したところです (以前は常に NULL が送信されていましたが、現在は機能しています)、以前のコードから情報を取得しているように見えます。

GAC フォルダーには 1 つのバージョンの dll しかありません。
dll フォルダー内のバージョンが新しいバージョンであることを確認しました (ファイルの日付に基づく)。
100% 確実にするために、新しい dll ファイルもプロジェクトの BIN フォルダーに入れました。
JetBrains の dotPeek を使用して dll ファイルを逆コンパイルすると、修正が含まれていることがわかります。
IIS から Web アプリケーションを再起動しようと
しましたが、開発環境で動作します。

どういうわけか、私のGACで古いdllファイルがまだアクティブであるように見えます。新しいものが確実に呼び出されるようにするにはどうすればよいですか? 本番サーバーを再起動しないことをお勧めします。

サーバー: MS Windows 2008 R2 64 ビット
開発: Windows 7 32 ビット

4

2 に答える 2

0

web.config よりも GAC に同じアセンブルの 2 つの dll がある場合、どの dll を次のように使用する必要があるかを指定できます。

<configuration>
     <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
               <dependentAssembly>
                     <assemblyIdentity name="YourClassLibrary" publicKeyToken="b035c4774706cc72" culture="neutral"/>
                     <bindingRedirect oldVersion= "1.0.1830.10493" newVersion= "1.1.1830.10461"/>
               </dependentAssembly>
          </assemblyBinding>
     </runtime>
</configuration>

newVersion では、どのバージョンを使用する必要があるかを指定できます。

于 2012-09-20T10:18:58.363 に答える
0

コメントを回答に「アップグレード」する必要があると信じています。

そして今、それは機能します!コマンドプロンプトを管理者として開いてみました。次に、dll ファイルを GAC フォルダーに直接コピーしました。その後、うまくいきました。管理者モードで Windows エクスプローラーを開いて同じものをコピーするのとなぜ違うのかは、私には謎です。また、日付/時刻を確認し、それらが正しく更新されたためです。–</p>

于 2012-10-25T09:17:52.537 に答える