0

管理者が_Layout.cshtmlに変更を加えることができるカスタムCMSサイトがあります(多くの変更を行っているため)。このサイトはAzureWebサイトでホストされていましたが、現在はクラウドサービスに移行しています。

現在、管理パネルは_Layout.cshtmlの内容を読み取って表示しています(実際には、〜/ Views / Sharedフォルダー内のすべてのファイルを編集できます)が、アプリケーションがファイルに書き込もうとすると、これがスローされます。エラー:パス'F:sitesrootViewsoasShared_Layout.cshtml'へのアクセスが拒否されました。

レイアウトファイルを編集する新しい方法に取り組んでいますが、そこに到達する前に、簡単な修正が必要です。このメソッドを使用してファイルに書き込みます:System.IO.File.WriteAllText(path、fileContents);

ローカルでは、Windows Azureエミュレーターでは、これは正しく機能していますが、Azureでホストされている場合は機能しません。

ありがとう!

4

1 に答える 1

1

まず第一に、あなたがあなたの_Layout.cshtmlファイルを更新することができるとしても、私はいくつかの問題があると言わなければなりません。

  1. Webロールのインスタンスが複数ある場合、管理者がページを変更すると、そのインスタンスのファイルのみが更新されますが、デフォルトでは他のインスタンスは変更されません。どういうわけかそれらを同期する必要があります。

  2. インスタンスが別の仮想マシンに移動された場合、ハードウェア障害や仮想マシンリソースの再割り当てなどの理由で、管理者が行ったすべての変更は失われます。

したがって、実装を修正することを強くお勧めします。変更部分をBLOB、テーブル、またはデータベースに保存し、ページがレンダリングされたときにDBからコンテンツを取得するのはどうでしょうか。これは、ページ自体を変更するよりも優れていると思います。

HTH。

于 2013-03-27T02:24:51.520 に答える