0

Web アプリケーションの開発に VS 2010 を使用しています。アップロードされた画像をサーバーの物理パスに保存し、IIS 7.5 で仮想パスも作成しました (下のスクリーンショット)。認証で、1 つの警告が表示されます。ベロコードを使用するために、サーバーから画像を取得しようとしましたが、画像が表示されません。仮想パスまたはコード内のパスの言及のどこに問題がありますか?

IIS エラー

    private void CallImage()
    {
     SqlConnection SqlCon = new SqlConnection(GetConnectionString());
     SqlCon.Open();
     string query = "SELECT Cmp_DocPath FROM Company_Info WHERE 
                          Vendor_ID= '" + ddlVendorID.SelectedValue + "'";
     SqlCommand SqlCmd = new SqlCommand(query, SqlCon);
     SqlDataAdapter da = new SqlDataAdapter(SqlCmd);
     DataTable dt = new DataTable();
     da.Fill(dt);
     string ImageName = Convert.ToString(dt.Rows[0][0].ToString());
     Image1.ImageUrl = this.ResolveUrl("D:/Upload/Commerical Certificates/"+ImageName);
    //  Image1.ImageUrl = this.ResolveUrl("D:\\Upload\\Commerical Certificates\\"+ImageName);
    //  Image1.ImageUrl = this.ResolveUrl("~\\Upload\\Commerical Certificates\\"+ImageName);
     SqlCon.Close();
    }
4

2 に答える 2

0

物理的な場所を画像に参照して、それがWebサイトで機能することを期待することはできません。画像へのパスをサイトのルートからの仮想パスとして保存します。例えば:

サイトのルートが次の場合:

d:\inetpub\mysite\

そしてあなたの画像は次の場所にあります:

d:\inetpub\mysite\uploads\images\

次に、データベース内の仮想パスは次のようになります。

~\uploads\images\image1.jpg
~\uploads\images\image2.jpg

次に、それをImageUrlプロパティとして設定できます。いいえ、解決する必要はありません(Imageコントロールが自動的に解決します)。

私の推測では、この問題が発生している理由は、Webサイト内にないイメージを参照しようとしているためです。これは、開発環境でNETWORK SERVICE、IIS_IUSRS、2番目のアクセスを許可することで作業できる場合でも同様です。このアプリケーションを実稼働環境に移動すると、問題が発生します。言うまでもなく、これはセキュリティとモジュール性の観点から物事を行うには非常に貧弱な方法です。

于 2012-11-11T08:48:49.080 に答える