信頼レベル「Medium」(Medium-Trust)のサイトでは、ASP.NET MVCが実行できない可能性
私が個人的に契約しているWindowsホスティング会社に、MVCサイトを発行し実行したところ、セキュリティエラーが発生しました(System.Security.Policy.PolicyException)。
Visual Studioの開発環境で試してもエラーが出ないため、ホスティング会社に確認したところ「信頼レベルは”Medium”」だとの事なので、その辺りを疑ってみました。
VS上で同じ環境を作って試すため、web.config内に以下の行を付け加えてみました。
<system.web> <trust level="Medium" /> </system.web>
その結果、VSの開発環境でも同様のエラーが発生しました。
。
冒頭で発行したとするMVCのサイトは、VSで自動生成されたMVCサイトのままでほとんどに手を付けていない状態。
信頼レベルの制約で疑わしい点があるとするなら、
程度ですが、2及び3については、既に発行済のASP.NET WebFormsで実行済みなので除外しました。
とすると、残るはOAuthのみ(他にあるかもしれないけど、それがダメならMedium-Trustって何も出来ないと同義ですよね)。
そこで、「こういう事例って他に結構あるのか?」と思い探してみると、こんな書込みが。
どうやら「ASP.NETの開発チームの公式見解としては、Medium-Trustは時代遅れ」という事です。
stackoverflow.com
理由としては、
- 「修正不可」とされていたMedium-Trustにまつわるバグを全て解決済み(デバッグではなく、Full-Trustにより解決したと思われる)
- ホスティング会社に対して、Medium-Trustから移行し、代わりにOSレベルの適切な分離をするようにガイダンスを提供済み
- これまで開発してきたフレームワーク(MVCやWebAPI等)からMedium-Trustのサポートを中止済み。今後これらのフレームワークにより作られたアプリケーションにはFull-Trustが求められる。
としている。つまりMedium-Trustは使うべきではないアクセス制限機能ということになります。
なお、ここでの「Medium-Trust」というのは「信頼レベル=Medium」というだけでなく、「Full」より下の「High」「Medium」「Low」「Minimum」の4つを全て含む総称としている点に注意です。
実際、このような書込みもあります。
stackoverflow.com
この中のリプライに
But, most of hosting provider offer full trust hosting now
とあるように、Full-Trustが米国(?)では一般的なようです。
ASP.NET MVCサイトのホスティング先をお探しの方は、あらかじめ運営会社に「信頼レベル」を確認していただく事をオススメします。