繁体   English   中英

收到仅在生产中的DLL的“无法加载文件或程序集”…“系统找不到指定的文件”错误

[英]Receive “Could not load file or assembly”…“The system cannot find the file specified” error for DLL only on Production

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

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

一旦我将发布的版本投入生产,它每次都会出错,并显示以下消息(附有屏幕截图):

无法加载文件或程序集“ Telerik.Web.Design,版本= 2011.2.915.40,文化=中性,PublicKeyToken = 121fae78165ba3d4”或其依赖项之一。 该系统找不到指定的文件。

我知道DLL存在于此,并且具有相同的版本“ 2011.2.915.40”。 我来回移动时真的很沮丧,由于某种原因,一旦移到产品中,它只会出错?

错误截图

错误截图

所以我觉得自己很愚蠢,但是我不得不将Telerik.Web.Design.dll添加到Prod的垃圾箱中。 奇怪的是,DLL从来不是该项目的一部分,并且在本地和DEV都工作得很好。

我在计算机上进行了搜索,找到了然后添加了它。 不知道为什么Local和DEV没有它就可以工作,但是现在我将其添加到BIN中修复了。

Telerik.Web.Design.dll

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

对于此类调试问题,我在Global.asax.cs设置了AppDoman.AssemblyLoad处理程序:

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记录器,但是我相信您可以轻松地将此代码适应您的记录基础架构。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM