Razor パーサーの問題で困惑しています。開発セットアップでは機能していますが、デプロイされたサイトでは失敗しています。
具体的には、@section に次のカミソリ マークアップがあります。
@section HtmlHeader
{
<style>
@@media (max-width: 400px)
{
#lnkHome { display: none; }
}
</style>
}
これは、ローカルの開発セットアップでは問題なく動作しますが、サーバーでは次のようになります。
"@" は、コード ブロックの先頭では無効です。識別子、キーワード、コメント、"(" および "{" のみが有効です。
これで、これを簡単に修正できることがわかりました:
@("@")media (max-width: 400px)
@@ をエスケープしますが、動作に違いがある理由を理解したいと思います。
明確にするために-問題は @section 内でのみ発生するようです。セクションの外に @@ がある場合、どちらのバージョンでも問題はありません。ただし、ライブ サイト (Server 2008 R2 を実行している) のセクションでは、問題が発生します。
私がチェックしたこと:
- 両方のマシンで同じバージョンの .NET 4.5 が実行されている
- すべての Razor および MVC ファイルは、コピー ローカル デプロイおよび Web デプロイです。
- GAC の MVC4 と Razor のインストールを Dev マシンから削除
- 動作する開発環境: Windows 8、ライブ サーバー: Windows 2008 R2
「正しい」動作は @@ であると想定していますが、実際のサーバーでは動作していません。