私がこのエラーに直面したとき、ちょうど休日から戻って、私たちのアプリにいくつかの小さな変更を加えました:
クラスMicrosoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener、Microsoft.WindowsAzure.Diagnostics、Version = 2.1.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35のタイプが見つかりませんでした。
コードは、休暇から戻る前は完全に実行されていました。 3週間前にAzureに最後に公開されましたが、現在は同じ問題が発生しています。ローカルで、次の構成セクションを追加して追加を削除することで修正しようとしました。
<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>
アセンブリへの参照の追加と削除を追加します。
プロジェクトをローカルでデバッグすると、VisualStudioは次の行で中断します。
NewRelic.Api.Agent.NewRelic.IgnoreTransaction();
これは、2日前まで(エラーログによると)ローカルと本番環境の両方で機能していました。
フルスタックトレース:
[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
エミュレーターで実行していない場合は、my SO answer here - Windows Azure Diagnostic Runtime Error(Could not create WindowsAzure.Diagnostics、Version = xx、 Culture = neutral、PublicKeyToken = xx 。基本的に、次を追加するだけです。
<filter level="TraceEventType.Error" />
の中に <listeners><add>
セクション。
クラウドサービスパッケージに_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.0
_、_74,448 bytes
_(_72.7KB
_)で、_C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\bin\plugins\Diagnostics\MonAgentListener.dll
_と同じファイルです。
この35KBバージョンの_Microsoft.WindowsAzure.Diagnostics.dll
_を、バージョン_2.4.6489.4
_としてマークされているC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Windows Azure Tools Diagnostics 1.0\Microsoft.WindowsAzure.Diagnostics.dll
またはC:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Windows Azure Tools\v2.9\Microsoft.WindowsAzure.Diagnostics.dll
の311KBバージョンと混同しないでください。
私のプロジェクトでは、_Microsoft.WindowsAzure.Plugins.Diagnostics
_ pluginの代わりにAzure PaaSDiagnostics
extension(AzurePowerShellとAzurePortalが使用するもの)を使用しています。古いバージョンのCloudService診断(現在の「拡張」モデルの代わりに、現在は廃止されている「プラグイン」モデルを使用します)。拡張機能がクラウドサービスに対して機能することを意図していることを考えると、これらのアセンブリを参照してパッケージに含める必要があることがわかります-拡張機能はそれを行いません。
ただし、さらに混乱させるために、VSクラウドサービスプロジェクトがある場合、Visual Studio2015およびVisualStudio 2017でさえ、古いプラグインシステムを使用します。 VSのクラウドプロジェクト展開システムを使用します。
(「クラウドサービス」システムはレガシーであり、古いAzureの「サービス管理」APIでのみサポートされ、現世代の「リソース管理」APIとシステムではサポートされていないことを考えると、MSが改善に投資していないのは当然のことです。 Visual Studioのクラウドサービス用のツールですが、プラグインと拡張機能(診断とリモートデスクトップの両方)の間のこの混乱により、何をすべきかを調査している間、プロジェクトが数週間遅れました。
また、クラウドサービスの_Microsoft.WindowsAzure.ServiceRuntime.dll
_への参照に_Copy Local = True
_が設定されていることを確認してください。これにより、ファイル_WindowsAzureEventSource.dll
_および_WindowsAzureTelemetryEvents.dll
_も出力にコピーされ、3つのファイルすべてがクラウドサービスパッケージに含まれるようになります。
これらのファイルがクラウドサービスパッケージファイルに含まれていることを確認します(デプロイ時に_E:\approot
_にデプロイされるようにします)
_File Version Size (bytes)
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
_
また、クラウドサービスワーカーロールプロジェクトに次の_App.config
_ファイルがあることを確認してください。
_<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,Microsoft.WindowsAzure.Diagnostics,Version=2.8.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
<!-- Ignore the VS-generated message "The attribute 'type' is not allowed." -->
<filter type="" />
</add>
</listeners>
</trace>
</system.diagnostics>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
_