2012-01-17 21 views
1

たとえば、パスD:/myprojects/sampleにAsp.net MVCアプリケーションがあり、静的ファイルをE:/filesに配置しました。asp.net mvcアプリケーションに静的ファイルを配置する最適な場所は何ですか?

静的ファイルが非常に大きいので、私はコンテンツフォルダに静的ファイルを配置したくありません。私のアプリケーションでE:/filesのファイルを使用することは可能ですか?どうやって?

私は

 
< iframe id="content-frame" src="E:/files/index.html" width="100%" frameborder="0"> 

以下のようにフレーム内の静的なhtmlファイルを表示したい。しかしプロトコル(e)がないbecuase Firefoxは、このアドレスを開く方法を知りません」と私はFirefoxでアラートを取得していますどのプログラムにも関連しています。

仮想ディレクトリがIISで作成されている場合、この問題は解決されますか?

返信いただきありがとうございます。

+0

これらのファイルをクライアントからアクセス可能にしますか? –

答えて

0

編集からApp_DataWhat is the App_Data folder used for in Visual Studio?

の詳細あなたは

App_Data
を使用することができます私は、これは、静的なコンテンツを格納するための絶対的な場所だと思います。

+1

そうでない場合、app_Dataはデータを意味します。したがって、その名前です。 「App_Data」フォルダは、メンバシップとロール情報を維持するためのデータベースなど、アプリケーションのローカルデータベースを格納するためにASP.NETで使用されます。詳細については、「メンバーシップの概要と役割管理について」を参照してください。 –

+0

あなたの説明のために@adamに感謝します。私はリソースファイルがApp_Dataに格納されていることを知っています。質問は、コンテンツフォルダに静的コンテンツを格納したくない場合です。私の選択App_Data! – Reza

+0

は、組み込みフォルダの外にある任意のフォルダにあります。 app_dataには特定の目的があり、静的なコンテンツではありません。静的コンテンツは文字通りiisでマップされたフォルダに移動します。もう一度 - app_dataではなく!リソースファイルは本質的にデータベースですが、app_localresourcesとapp_globalresourcesもあります。 –

1

どこにでも置くことができます。

IISでは、そのアドレスを指す仮想ディレクトリを持つことができます。例えば、

はあなたの静的ファイルがでていることができます

"E:/ファイル"

IISで - > YourWebSite - >(のVirtualDirectoryを追加するE」を "コンテンツ" とポイントを言うことができます:/ファイル」

今、あなたはアウト側からアクセスすることができますように、

http://YourWebSite/content/myimg.png

ファイルを同じにして配置されているかのように動作します。ディレクトリ。

1

許可を得ている限り、ファイルシステムに任意の場所にファイルを保存できます。ただし、それらをアプリケーションディレクトリに保存することはしばしば意味があります。

良い場所は、ルートのApp_Dataフォルダです。これは、App_Dataフォルダ内のファイルにHTTP経由で直接アクセスすることができないためです。サーバは404エラーを返します。これは、将来、これらのファイルへのアクセスを許可されたユーザーに限定する必要がある場合などに便利です。以下のようになります

あなたはMVCを使用しているので、あなたはこのフォルダ内のサーバーのファイルへのルートを設定する必要があるだろう、:

public FilePathResult GetFile(string path) 
{ 
    return File(Path.Combine(Server.MapPath("~/App_Data/"), path), "image/jpeg"); 
} 

それではファイルがマークアップで使用できるように:

@Url.Action("GetFile", new { controller = "Files", path = "myimage.jpg" }) 

これは単なる一例であるとして、あなたはおそらく、直接ファイルパスを渡したくない(たぶん代わりにIDを渡す)が、あなたはそれがどのように動作するかのアイデアを得ます。

+0

いくつかの明確な例と良い説明のために+1。私も、経路を設定し、〜の規約を使用することをお勧めします。そうでなければ、展開時に問題に遭遇する可能性があります。 – Doomsknight

2

それは本当にこれらの「静的」ファイルとどのようなクライアントの性質に依存する、または実際にあなた、彼らと一緒にやりたいです。

彼らは、サーバー上でアクセスするだけであれば、それはあまりにも長い間、必要な権限を持っているとしてのアイデンティティは、プロセスが実行されるよう、関係ありません。

クライアントからアクセスする場合は、そのファイルを提供する必要があります。

HTMLファイルの場合は、必要なフォルダにそれらをダンプできます。 Contentフォルダは私にとっては合理的な場所のようですので、なぜあなたが「したくない」のかを知りたいと思っています。

画像やその他のものは、あまりにももちろん、すでにフォルダがあります。

しかし、これらの静的ファイルがWebサイトの展開プロセスの外部で更新されるかどうかを検討する必要があります。もしそうなら、そのファイルがインシトゥで更新される場所を指すIISの単純な仮想ディレクトリを考えてみましょう。あなたがそれらについて心配する必要はありません。

使用ルーティングし、それが不必要に簡単に直接IISで提供することができ、ファイルの要求パイプラインを複雑にすると、私の意見では、最後の手段としてコントローラを介して要求を渡します。

関連する問題