18

こんにちは、助けてくれてありがとう、この質問または同様の質問が、MVC 3 アプリケーションに関して頻繁に投稿されていることを知っています。ただし、.net 4.0 ターゲット フレームワークを使用して Visual Web Developer Express 2010 内からアプリケーションを起動しようとすると、常にこのエラー メッセージが表示されます。

正確なエラー メッセージは次のとおりです。

セキュリティの透過的なメソッド 'System.Runtime.Diagnostics.DiagnosticTrace..ctor(System.String, System.Guid)' によって、セキュリティ クリティカルなメソッド 'System.Runtime.Diagnostics.EtwDiagnosticTrace..ctor(System.String, System.Guid) にアクセスしようとしています)' 失敗しました`.

アセンブリ 'System.ServiceModel.Internals, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' は、AllowPartiallyTrustedCallersAttribute でマークされ、レベル 2 のセキュリティ透過性モデルを使用します。レベル 2 の透過性により、AllowPartiallyTrustedCallers アセンブリ内のすべてのメソッドが既定で透過的なセキュリティになります。これが、この例外の原因である可能性があります。

スタックトレース:

[MethodAccessException: Attempt by security transparent method 'System.Runtime.Diagnostics.DiagnosticTrace..ctor(System.String, System.Guid)' to access security critical method 'System.Runtime.Diagnostics.EtwDiagnosticTrace..ctor(System.String, System.Guid)' failed.

Assembly 'System.ServiceModel.Internals, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is marked with the AllowPartiallyTrustedCallersAttribute, and uses the level 2 security transparency model.  Level 2 transparency causes all methods in AllowPartiallyTrustedCallers assemblies to become security transparent by default, which may be the cause of this exception.]
   System.Runtime.Diagnostics.DiagnosticTrace..ctor(String traceSourceName, Guid etwProviderId) +24
   System.ServiceModel.Activation.FxTrace.InitializeTracing() +90
   System.ServiceModel.Activation.FxTrace.get_Trace() +84
   System.ServiceModel.ServiceHostingEnvironment.EnsureInitialized() +59
   System.ServiceModel.ServiceHostingEnvironment.OnEnsureInitialized(Object state) +4
   System.ServiceModel.AspNetPartialTrustHelpers.PartialTrustInvoke(ContextCallback callback, Object state) +52
   System.ServiceModel.ServiceHostingEnvironment.SafeEnsureInitialized() +65
   System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +58
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +143
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

私はここで完全に途方に暮れています。基本的なアプリケーションをゼロから作成して起動しようとすると、何も追加していなくても、このエラー画面が表示されます。から target framework="4.0" 属性を削除しようとしました

<compilation debug="true" targetFramework="4.0" />

タグを付けて実行しても結果はありません。その属性を削除して追加しようとしました

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v2.0.50727"/>
  <supportedRuntime version="v4.0.30319"/>
 </startup>

このスレッドで提案されているように: BadImageFormatException - 実行可能ファイルの実行に使用される .NET バージョンを指定することは可能ですか? 問題があるかもしれないと聞いたので、.Net 4.0 フレームワークのインストールを修復してみました。試用版の有効期限が切れたために Microsoft Visual Studio 2010 から移行したプロジェクトで作業するために、昨夜 Visual Web Developer をインストールしました。

4

4 に答える 4

17

今日、この問題を経験しました。私が理解している限り、問題は .NET 4.0 アセンブリがデフォルトでsecurity criticalになっていることです。セキュリティの透過的なコードがセキュリティ クリティカルなコードを呼び出すことはできません。

AllowPartiallyTrustedCallersAttribute私の場合の解決策は、アプリケーション内のいくつかのアセンブリのみで定義したことに関連していました。この属性をすべてのアセンブリから削除するか、すべてのアセンブリに追加する必要がありました。

于 2012-11-27T11:29:43.467 に答える
2

関連するアセンブリが同じになるように、AssemblyInfo.cs ファイルに次を追加する必要がある場合があります。

[assembly: SecurityTransparent()]
于 2014-12-17T21:20:11.523 に答える
2

ここでのパーティーには非常に遅れていますが、VS2013 では .NET 4.5.1 ClickOnce プロジェクトで同じ問題に苦しんでおり、次の方法でこの問題を修正しました。

  1. 問題の ClickOnce プロジェクトのプロジェクト プロパティを開く
  2. セキュリティタブを開く
  3. 信頼設定を「これは部分信頼アプリケーションです」に変更する
  4. 信頼設定を「これは完全に信頼できるアプリケーションです」に戻す

これが他の誰かに役立つことを願っています!

于 2015-09-18T15:05:16.410 に答える
0

どうやら、少なくとも私が Visual Web Developer でアプリケーションを起動できるようにした潜在的な回避策の 1 つは、次のとおりです。

  • 要素内にある要素からtargetFramework="4.0"属性を削除します。

  • Silverlight アプリケーションの場合 ApplicationName.Web ヘッダーを右クリックしてプロパティを選択し、ターゲット フレームワークを 3.5 に変更します。asp.net アプリケーションの場合は、一番上のプロジェクト ヘッダーを右クリックしてプロパティを選択し、ターゲット フレームワークを 3.5 に設定します。

これはすべて、.Net 4.0 フレームワークのインストールに問題があることを示唆しています。しかし、.Net 4.0 フレームワークを少なくとも 2 回インストールしてアンインストールしてからインストールしたので、現時点ではこれが唯一の選択肢です。誰かが私にとってより良い応答/より永続的な解決策を提供してくれたら、それを答えとしてマークします。それまでの間、「他のフレームワークのインストール」を起動し、.Net 4.0 ターゲット パックと .Net 4.0 ランタイムの両方をもう一度再インストールして、動作するかどうかを確認します。

于 2012-08-23T16:05:53.247 に答える