さまざまなweb.config設定は、常に私にとってちょっとした謎でした。 Microsoftがデフォルトでそこに置かれたコンテンツの一部をクリーンアップしてくれてうれしいが、それでも問題を引き起こしている。
具体的には、Visual Studio 2015は、標準ASP.NET MVCアプリケーションの生成されたweb.configに次のセクションを配置しています。
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
このアプリケーションをGoDaddy共有Pleskホスティングアカウントにアップロードすると、次のエラーが表示されます。
このプログラムはグループポリシーによってブロックされています。詳細については、システム管理者にお問い合わせください。
GoDaddyのサポートは完全に不本意であり、支援を提供することはできません。しかし、上記のセクションをコメントアウトすると、エラーは消えることがわかりました。
このブロックの目的を知っている人や、マイクロソフトがそこに置いている理由を知っている人はいますか?私のアプリはそれなしでも大丈夫なようです。 (私のアプリはVBではなくC#を使用していることに注意してください。)
ASP.NET 2では、サイトをコンパイルせずにホスティングにアップロードすることができます。その後、最初のリクエストで、web.configに見られるコンパイラ設定を使用してサイトがコンパイルされます。サイトをプリコンパイルしても、App_code
フォルダーにコードがある場合、それらの設定はそのコードのコンパイルに使用されます。
Go-daddyはサーバーでのコンパイルを無効にしたため、悪意のあるコードを挿入してコンパイル/実行することはできません。
App_code
フォルダーを使用せずにWebサイトをプリコンパイルする限り、言及したweb.config
セクションを削除できます。
App_code
フォルダーの詳細については、次を確認してください。
ASP.NETチェックの動的コンパイルの詳細については、次を参照してください。
<system.codedom>
<!--remove all the contents here-->
</system.codedom>
system.codedom
タグ内のすべてのコンテンツを削除して追加します
<trust level="Full"/>
system.web
タグ内
<system.web>
<trust level="Full"/>
</system.web>
私はこれが少し遅れていることを理解していますが、要素内のすべてのコンテンツを削除することでこの問題を解決しました。これは、プリコンパイル済みとそれ以外の両方で機能するようです。
サーバーでAsp.netの設定を変更します。信頼レベルのオプションがあります。 「フル」に設定します。