首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到类Microsoft.WindowsAzure.Diagnostics的类型

找不到类Microsoft.WindowsAzure.Diagnostics的类型
EN

Stack Overflow用户
提问于 2014-01-07 16:42:28
回答 2查看 14.3K关注 0票数 17

刚从假期回来,开始对我们的应用程序做一些小改动,当我遇到这个错误时:

找不到Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,Microsoft.WindowsAzure.Diagnostics,Version=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35类的类型。

在假期回来之前,代码运行得很好。它最后一次发表在Azure上是在3周前,现在也有了同样的问题。在本地,我试图通过删除add、添加以下配置部分来修复它:

代码语言:javascript
复制
<system.diagnostics>
    <trace>
        <listeners>
            <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
            </add>
        </listeners>
    </trace>
</system.diagnostics>

添加、添加和删除对程序集的引用:

当我在本地调试项目时,Visual会中断以下一行:

代码语言:javascript
复制
NewRelic.Api.Agent.NewRelic.IgnoreTransaction();

直到两天前(根据错误日志),这已经在本地和生产中工作了。

全堆栈跟踪:

代码语言:javascript
复制
[ConfigurationErrorsException: Couldn't find type for class Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.]
   System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData) +6755367
   System.Diagnostics.TypedElement.BaseGetRuntimeObject() +45
   System.Diagnostics.ListenerElement.GetRuntimeObject() +83
   System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() +143
   System.Diagnostics.TraceInternal.get_Listeners() +181
   System.Diagnostics.TraceInternal.WriteLine(String message) +119
   System.Diagnostics.Trace.WriteLine(String message) +4
   NewRelic.Api.Agent.NewRelic.IgnoreTransaction() +13
   Linklicious2.Controllers.ApiController.GetLinksToPing(Boolean test) +46
   lambda_method(Closure , ControllerBase , Object[] ) +98
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +214
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +55
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +253
   System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +21
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +191
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +324
   System.Web.Mvc.Controller.ExecuteCore() +106
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +91
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +34
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +19
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +48
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9631764
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
EN

Stack Overflow用户

发布于 2017-05-22 00:11:19

虽然我在云服务包中有一个项目引用和Microsoft.WindowsAzure.Diagnostics.dll的本地副本,但事实证明,您也需要包中的MonAgentListener.dll副本--在添加该文件之后,它又开始工作了。

具体来说,我使用的是Microsoft.WindowsAzure.Diagnostics.dll版本2.8.0.0,它的大小是35,608 bytes (34.7KB)。它是与C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\Microsoft.WindowsAzure.Diagnostics.dll相同的文件。

以及MonAgentListener.dll版本33.1.5.074,448 bytes (72.7KB)的大小,它与C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\MonAgentListener.dll文件相同。

不要将此35 as版本的Microsoft.WindowsAzure.Diagnostics.dll与在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Windows Azure Tools Diagnostics 1.0\Microsoft.WindowsAzure.Diagnostics.dllC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Windows Azure Tools\v2.9\Microsoft.WindowsAzure.Diagnostics.dll上标记为2.4.6489.4的311 as版本混为一谈。

我的项目是使用Azure PaaSDiagnostics extension ( Azure PowerShell和Azure Portal所使用的),而不是Microsoft.WindowsAzure.Plugins.Diagnostics 插件,后者是Cloud诊断的旧版本(它使用的是现在过时的“插件”模型,而不是当前的“扩展”模型)。考虑到扩展是针对任何云服务的--原来您仍然需要引用这些程序集并将它们包含在包中--扩展将不会为您完成。

但更令人困惑的是:如果您有VS云服务项目,那么如果您使用VS的云项目部署系统,那么Visual 2015甚至Visual 2017仍然使用旧的插件系统。

(考虑到“云服务”系统是遗留的,并且仅由旧的Azure“服务管理”API支持,并且不受当前一代的“资源管理”API和系统的支持,因此MS没有投资改进Visual中的云服务工具也就不足为奇了--但这种插件和扩展(诊断和远程桌面)之间的混淆将我的项目推迟了几周,而我在研究我应该做什么。

还要确保云服务对Microsoft.WindowsAzure.ServiceRuntime.dll的引用具有Copy Local = True集。这还会将文件WindowsAzureEventSource.dllWindowsAzureTelemetryEvents.dll复制到输出中,并确保所有3个文件都包含在云服务包中。

TL;DR:

  1. 确保云服务包文件中有这些文件(因此它们在部署时被部署到E:\approot中) 文件版本大小(字节) Microsoft.WindowsAzure.Diagnostics.dll 2.8.0.0 35,608 MonAgentListener.dll 33.1.5.0 74,448 Microsoft.WindowsAzure.ServiceRuntime.dll 2.7.1198.768 158,624 WindowsAzureEventSource.dll 2.7.1198.768 83,872 WindowsAzureTelemetryEvents.dll 2.7.1198.768 24,992
  2. 还要确保云服务工作者角色项目有一个App.config文件,如下所示:
票数 8
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20977105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档