0

我有一个使用 Telerik 控件的 ASP.net 4.0 网站。最近,不再与公司合作的过去开发人员升级了 Telerik 控件版本。

该网站在本地运行良好,在我将其发布并将其移动到我的 DEV 环境后(以前的站点已被清除并替换为整个已发布的新站点),它运行良好,没有任何问题。

一旦我将已发布的版本移动到生产中,它每次都会出错,并带有以下消息(附截图):

无法加载文件或程序集 'Telerik.Web.Design, Version=2011.2.915.40, Culture=neutral, PublicKeyToken=121fae78165ba3d4' 或其依赖项之一。该系统找不到指定的文件。

我知道 DLL 存在那里并且是相同的版本“2011.2.915.40”。我真的很困惑,因为我来回移动了它,并且由于某种原因,它只有在移动到 prod 时才会出错?

错误截图

错误截图

4

3 回答 3

3

所以我觉得很愚蠢,但我不得不将 Telerik.Web.Design.dll 添加到 Prod 的 bin 中。奇怪的部分是 DLL 从来不是这个项目的一部分,而且在本地和 DEV 工作得很好。

我在我的电脑上进行了搜索,找到了它,然后添加了它。不知道为什么 Local 和 DEV 在没有它的情况下工作,但现在修复了我将它添加到 BIN 的问题。

Telerik.Web.Design.dll

于 2012-08-17T23:48:38.500 回答
1

尝试找到您的站点尝试加载的 Telerik 程序集,它可能仍会达到 ASP.NET 临时文件中的某个旧版本。也发生在我身上。

对于这样的调试问题,我将AppDoman.AssemblyLoad处理程序设置在我的Global.asax.cs

var appDomain = AppDomain.CurrentDomain;
appDomain.AssemblyLoad += AssemblyLoadEventHandler;

LogLoadedAssemblies();

使用这些:

private void LogLoadedAssemblies()
{
    var log = LogManager.GetLogger("AssemblyLoadHandler");
    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
    {
        log.Info("Already loaded: " + assembly.FullName + " (" + (assembly.IsDynamic ? "dynamic" : assembly.Location) + ")");
    }
}

static void AssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
{
    LogManager.GetLogger("AssemblyLoadHandler").Info("Assembly loaded: " + args.LoadedAssembly.FullName + " (" + (args.LoadedAssembly.IsDynamic ? "dynamic" : args.LoadedAssembly.Location) + ")");
}

我使用 log4net 记录器,但我相信您可以轻松地将此代码调整到您的日志记录基础设施。

于 2012-08-17T15:19:04.273 回答
0

似乎我遇到了同样的问题。尝试将所有必需的 dll 放入生产中的bin 文件夹中。

于 2012-08-17T15:48:03.280 回答