代码之家  ›  专栏  ›  技术社区  ›  olf

ASP.NET值在方法调用时更改

  •  0
  • olf  · 技术社区  · 12 年前

    这把我逼疯了! 我的服务器上有一个asp.net应用程序。它引用了两个dll文件,它们放在服务器上我的GAC中。我还将pdb文件放在了GAC文件夹中,这样我就可以远程调试了。

    这是我的问题: 当我拨打以下电话时:

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

    我可以看到e.Initials包含值“OFR”。 当我按F11进入addToAbenceList时:

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

    变量首字母现在包含值NULL。

    我刚刚纠正了这个问题(以前它总是发送NULL,现在它工作了),所以不知怎么的,它似乎仍然从我以前的代码中获得信息。

    我的GAC文件夹中只有一个版本的dll。
    我已经确保我的dll文件夹中的版本是新版本(基于文件的日期)。
    为了100%确定,我还将新的dll文件放在我的项目BIN文件夹中。
    当使用JetBrains中的dotPeek反编译dll文件时,我发现其中包含我的更正。
    我已尝试从IIS重新启动web应用程序
    它适用于我的开发环境。

    所以不知怎么的,旧的dll文件在我的GAC中似乎仍然是活动的。我怎样才能保证新的一个被调用?最好不要重新启动生产服务器。

    服务器:MS Windows 2008 R2 64位
    开发:Windows 7 32位

    2 回复  |  直到 12 年前
        1
  •  0
  •   Imran Balouch    12 年前

    如果GAC中有两个与web.config中相同程序集的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>
    

    在里面 新版本 您可以指定必须使用的版本。

        2
  •  0
  •   olf    12 年前

    相信我必须将我的评论“升级”为一个答案:

    现在它起作用了!我尝试以管理员身份打开命令提示符。然后我将dll文件直接复制到GAC文件夹中。然后它起了作用。为什么它与在管理员模式下打开Windows资源管理器并复制相同的内容不同,这对我来说是个谜。还因为我检查了日期/时间,并且它们更新正确。