1

私は、英語とアラビア語の 2 つの言語のプロジェクトに取り組んでいます。アラビア語版はサブフォルダー (Ar) にあります。

Visual Studio のローカル ホストでは、両方のバージョンですべて正常に動作します。しかし、ウェブサイトを実サーバーにデプロイしたとき。アラビア語版の画像は英語版と同じパスを取得することに気付きました (画像は表示されません)。

次のコードを使用して、サブフォルダーに画像をアップロードします。

string fileExt = System.IO.Path.GetExtension(fileBgUpload.FileName);
string filename;
string guid = Guid.NewGuid().ToString();
try
{
    if (fileExt != "")
    {
        if (fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".JPG" || fileExt == ".JPEG")
        {
            if (fileBgUpload.HasFile)
            {
                filename = Path.GetFileName(fileBgUpload.FileName);
                fileBgUpload.SaveAs(Server.MapPath("/img/Gallery/") +  filename + guid + ".jpg");
                imgBackground.ImageUrl = ("/img/Gallery/") + filename + guid + ".jpg";
            }
        }
    }
}

データベースでは、画像のURLは次のようになります

/img/Gallery/Imagename.jpg

Visual Studio で Web サイトを実行すると、すべて正常に動作します。画像の URL は次のとおりです。

localhost:1020/Ar/img/Gallery/Imagename.jpg  

サーバー (ホスト) で同じことを行うと、次の URL が画像に表示されます。

www.mydomain.com/img/Gallery/Imagename.jpg

これは私の問題です。メインフォルダーのパスを取得するため、画像は表示されません。

何か案は?私がしていることは正しいと誰かに教えてもらえますか?この場合、ビジュアルスタジオですべてが正常に機能するのはなぜですか。

4

1 に答える 1

1

Web サイトを展開すると、サーバーは IIS を使用し、フォルダー (Ar) はおそらく仮想ディレクトリに変更されます。

Visual Studio で最初にすべきことは、Visual Studio のローカル サーバーを IIS Express に変更することです。次に、(Ar) フォルダーの仮想ディレクトリを作成し、同じ結果が得られるかどうかを確認します。

仮想ディレクトリを作成するには、こちらをお読みください

コードで最後に変更する必要があるのは、データベースに保存する前であっても、文字列パスに「/Ar/」を追加することです。

例えば

imgPathForDb="/Ar/"+ your string path

また

"/Ar/img/Gallery/" + filename + guid + ".jpg";

ほとんどの開発者は、Visual Studio ローカル サーバーよりも IIS を好みます。そのため、今後のプロジェクトでは IIS Express を使用することを強くお勧めします。

于 2016-07-08T02:14:42.590 に答える