无法加载文件或程序集“Microsoft.AspNet.TelemetryCorrelation”或其某个依赖项。系统找不到指定的文件。

14

我在IIS 7下有两个Web应用程序(本地Windows 10专业版)。 在根目录下是一个MVC .Net 4.7.1版本。 到目前为止,这里似乎一切都正常运行。 但是,在默认站点根目录下设置为单独的应用程序的是一个旧的.Net Version 4.0 WebForms应用程序。

版本4应用程序是使用Visual Studio 2015构建的,而MVC是使用Visual Studio 2017构建的。 我已经在具有相同设置的不同网站下运行了版本4的WebForms应用程序,并且它可以正常运行。 只有当作为不同的应用程序在根节点下运行时才会出现问题。 此外,我尝试在两个应用程序上使用不同的App池以及使用相同的App池,但错误没有变化。

我还尝试卸载和禁用ApplicationInsights,但仍然出现同样的问题。

[FileNotFoundException: 找不到文件或程序集'Microsoft.AspNet.TelemetryCorrelation'中的一个或多个依赖项。 系统无法找到指定的文件。] System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0 System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +95

System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +64 System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +60 System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase) +49

[ConfigurationErrorsException: 无法加载文件或程序集'Microsoft.AspNet.TelemetryCorrelation'或其中一个依赖项。系统找不到指定的文件。] System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase) +558 System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, Boolean checkAptcaBit) +30 System.Web.Configuration.Common.ModulesEntry.SecureGetType(String typeName, String propertyName, ConfigurationElement configElement) +57 System.Web.Configuration.Common.ModulesEntry..ctor(String name, String typeName, String propertyName, ConfigurationElement configElement) +57 System.Web.HttpApplication.BuildIntegratedModuleCollection(List`1 moduleList) +182 System.Web.HttpApplication.GetModuleCollection(IntPtr appContext) +1086 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +120

此错误信息说明它在系统中找不到名为'Microsoft.AspNet.TelemetryCorrelation'的文件或程序集,导致无法加载。这通常是由于缺少所需的软件包或组件而引起的。System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +169 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +372 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +329

[HttpException (0x80004005): 无法加载文件或程序集“Microsoft.AspNet.TelemetryCorrelation”或其其中一个依赖项。系统找不到指定的文件。] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +525 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +118 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +708

6个回答

13

在我的情况下,子应用程序没有使用 ApplicationInsights ,我将这些排除项添加到子应用程序的 web.config 文件中。这样问题就解决了。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="false">
      <remove name="TelemetryCorrelationHttpModule" />
      <remove name="ApplicationInsightsWebTracking" />
    </modules> 
  </system.webServer>
</configuration>

这是我找到答案的讨论话题: https://github.com/aspnet/Microsoft.AspNet.TelemetryCorrelation/issues/21#issuecomment-508535397

我的回答虽然晚了,但它可能对其他人有所帮助。


4

当我在IIS中使用默认网站内的应用程序时,我也遇到了同样的问题。请从根目录(在我的情况下是默认网站)中删除所有的.net文件,然后它就可以正常工作了。


3
如何从根目录中删除 .net 文件?请详细说明... -谢谢 - Rehan Shah
我在默认网站中创建了一个应用程序,因此我删除了分配给默认网站的文件夹中的所有文件。 - Prince Prasad
@PrincePrasad,你最终让这两个应用程序都工作了吗?我不太明白,如果你删除了所有文件,那么你不是也删除了根应用程序吗? - Carlos
是的,就我的情况而言,我删除了根应用程序。 - Prince Prasad
删除站点根目录中的web.config文件解决了我的问题。 - undefined

4
您可以使用Nuget包管理器,浏览 Microsoft.AspNet.TelemetryCorrelation 并安装它。

0

Stanley。

如果我理解你的意思正确,我建议你执行以下操作:

导航到正常工作的WebForms实例。在该目录中搜索包含单词“Telemetry”的文件。您应该会找到几个.dll文件。

在不起作用的WebForms目录中进行相同的搜索。您应该会发现没有或更少的文件。

我会将“Telemetry”文件从正常工作的实例复制到损坏的实例(匹配目录),然后查看会发生什么。!?

根据错误,代码正在尝试加载缺少的文件。--无法加载文件或程序集。(FileNotFoundException)


工作站实际上指向与IIS默认网站根目录下的应用程序相同的位置。我只是在IIS中创建了另一个网站以查看它是否能够独立工作。因此,工作正常和不正常的网站都使用完全相同的文件。 - stanley

0
所以我找到了一个 SO问题, 显示如何禁用ApplicationInsights。 然而,这样做并没有真正解决问题,但是我进去并在Nuget软件包和项目根目录下的配置文件中删除了所有迹象。 一旦完成这项工作,错误就不再出现。

0
在我的情况下,我需要清理我的applicationhost.config文件,针对我的.vs目录中的站点,我认为其他答案中已经提到了这一点。
我配置了不同的根路径“/”,这似乎可能是冲突的源头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接