2016-10-20 5 views
0

私のコントロール外の理由から、UNCパスを利用したディレクトリ構造に基づいてWebページ(ギャラリービューの一種)に一連の画像をレンダリングするように要求されました。私はこれに取り組んでいるが、UNCの規則を使ってサイトを展開しているので、私は相対的なパスを使っていることに気づくでしょう。ASP.NETは画像を表示できません

イメージをレンダリングするために、以下の部分ビューを作成しました。後でフォーマットできます。 @imageが上記画像をレンダリングする必要の絶対パスを表し

@model System.Collections.Generic.List<string> 

@foreach (var image in Model) 
{ 
    <div id="ptImage"> 
     <img src="@image" alt="@Path.GetFileName(image)"/> 
    </div> 
} 

ページのビューソースに表示されるパスは、私が戻ってきて、イメージの場所を実際にローカルに定義する必要があると感じているものです。相対パスで画像にアクセスするとき、これは他人が期待するものでしょうか?

<div id="gImg"> 
    <img src="C:\Projects\Test_Site\Site_1\ES3\ES3_0.bmp" alt="ES3_0.bmp" /> 
</div> 
<div id="gImg"> 
    <img src=" C:\Projects\Test_Site\Site_2\ES4\ES4_0.jpg" alt="ES4_0.jpg" /> 
</div> 

部分表示が読み込まれると、私は画像の代わりのテキストのみを表示し、画像自体は表示しません。 IIS Expressのログを見ると、次のようなメッセージが表示されます。

http://localhost:1348/TestGallery/ 404 0 2 6、This resource私には理解できますが、404 0 2 xはリソースが見つかりません。

本当にファイルへのパスで、IISはリソースを見つけるための有効な入力として何を期待していますか?さらなる検索を実行するために質問をどのようにフレーズするかわからない。

+0

私はそれは権限の問題だと思います。 のような画像タグでリアルタイムパスを使用するようにしてください –

答えて

0

imgタグのパスは、ディスク上の実際のファイルの場所ではなく、WebサイトのURLである必要があります。あなたのWebアプリケーションはURLを翻訳して、適切な場所から画像を取得する必要があります。

一つの可能​​な解決策:

  • は、動的に特定のURLパス上のすべてのアイテムを処理するために、アプリケーションのRouteConfig.csにカスタムエントリを作成します。 (この例では、別々のコントローラです。)任意のクエリーパスを処理するコードで

    routes.MapRoute(
        name: "Images", 
        url: "image/{*querypath}", 
        new { controller = "Image", action = "Retrieve" } 
        ); 
    
  • 、あなたが探しているUNCパスに(上記querypathで)相対URLを変換し、画像を提供します。

    return File(UncRootPath + querypath, "image/png"); 
    
関連する問題