自分のWebサイトでローカルのWindows 7開発マシンで.NET port of Yahoo's YUI compressorを使用しようとしています。完全な信頼WebアプリケーションでこのサードパーティDLLがセキュリティ例外をスローするのを止める方法
Webアプリケーションが完全信頼モードで実行されています。
<system.web>
<trust level="Full" />
</system.web>
私はこのコードを呼び出すと、それはセキュリティ例外
string output = "{someJavaScriptCode:true}";
output = JavaScriptCompressor.Compress(output);
例外の詳細をスロー:
説明:また、私の
web.config
に、私はこのセットを持っていますアプリケーション は、セキュリティポリシーによって許可されていない操作を実行しようとしました。 このアプリケーションに必要な 権限を与えるには、 システム管理者に連絡するか、 アプリケーションの信頼レベルを 構成ファイルに変更してください。例外の詳細: System.Security.SecurityException: タイプ の許可の要求「System.Security.Permissions.SecurityPermission、 mscorlib、バージョン= 2.0.0.0、 ニュートラル文化=、 なPublicKeyToken = b77a5c561934e089 ' が失敗しました。
これは私のローカル開発マシンであるため、私はサーバー設定を完全に制御しており、私が知る限りすべてを完全に信頼できるものにしています。
one possible solution on Googleが見つかりましたが、ソリューションのコードがどこにあるのかわかりません。
解決策はそれほど詳細ではなく、なぜ解決策が機能するのかについては説明がありませんでした。
これを解決する良い方法は誰にも分かりますか?好ましくは、完全なコード例や、私のWebアプリケーションでこの作業を行うために必要なものの良い説明がありますか?
editここでは、例外のスタックトレースが役立ちます。
[SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
System.Threading.Thread.set_CurrentCulture(CultureInfo value) +38
Yahoo.Yui.Compressor.JavaScriptCompressor..ctor(String javaScript, Boolean isVerboseLogging, Encoding encoding, CultureInfo threadCulture, Boolean isEvalIgnored, ErrorReporter errorReporter) +196
Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(String javaScript, Boolean isVerboseLogging, Boolean isObfuscateJavascript, Boolean preserveAllSemicolons, Boolean disableOptimizations, Int32 lineBreakPosition, Encoding encoding, CultureInfo threadCulture, Boolean isEvalIgnored) +119
Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(String javaScript, Boolean isVerboseLogging, Boolean isObfuscateJavascript, Boolean preserveAllSemicolons, Boolean disableOptimizations, Int32 lineBreakPosition, Encoding encoding, CultureInfo threadCulture) +67
Yahoo.Yui.Compressor.JavaScriptCompressor.Compress(String javaScript, Boolean isVerboseLogging, Boolean isObfuscateJavascript, Boolean preserveAllSemicolons, Boolean disableOptimizations, Int32 lineBreakPosition) +112
VideoSync.Js.Script.GetOutput(Boolean compress) in [REDACTED]\Script.ashx.cs:78
VideoSync.Core.CombinerBase.ProcessRequest(HttpContext c) in [REDACTED]\CombinerBase.cs:28
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
JavaScriptCompressorクラスを修正して、スレッドのCurrentCultureを変更しないようにするのが最良の解決策です。これは、他のロケールで数字が正しく表示されないようにするために追加されたハック(http://yuicompressor.codeplex.com/workitem/3219)のようです。適切なアプローチは 'ToString呼び出しごとに' CultureInfo.InvariantCultureを使うことです。 –
@Bradley私はあなたの解決策をとることに決めました。このバグの影響を受けたのはYUIコードの2つの場所だけなので、変更するのは本当に簡単な修正でした。私がそれを変更したら、私は文化を設定するためのすべての呼び出しを削除し、すべてが機能しました。株式YUIコードを変更せずに実行できるようにするためには、何が必要かを知りたいのはまだ興味があります。 –