Web APIアプリに、CSVファイルに書き込むための次のコードがあります。
private void SaveToCSV(InventoryItem invItem, string dbContext)
{
string csvHeader = "id,pack_size,description,vendor_id,department,subdepartment,unit_cost,unit_list,open_qty,UPC_code,UPC_pack_size,vendor_item,crv_id";
int dbContextAsInt = 0;
int.TryParse(dbContext, out dbContextAsInt);
string csvFilename = string.Format("Platypus{0}.csv", dbContextAsInt);
string csv = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12}", invItem.ID,
invItem.pksize, invItem.Description, invItem.vendor_id, invItem.dept, invItem.subdept, invItem.UnitCost,
invItem.UnitList, invItem.OpenQty, invItem.UPC, invItem.upc_pack_size, invItem.vendor_item, invItem.crv_id);
string existingContents;
using (StreamReader sr = new StreamReader(csvFilename))
{
existingContents = sr.ReadToEnd();
}
using (StreamWriter writetext = File.AppendText(csvFilename))
{
if (!existingContents.Contains(csvHeader))
{
writetext.WriteLine(csvHeader);
}
writetext.WriteLine(csv);
}
}
開発マシンでは、csvファイルはデフォルトで「C:\ ProgramFiles(x86)\ IISExpress」に保存されます。最終的な休憩/作業場所に展開するときの準備として、ファイルをサーバーの「Platypi」フォルダーなどに保存するために何をする必要がありますか?何か特別なことはありますか? 「カモノハシ」への書き込みを許可するために、特定のフォルダー柿を特別に設定する必要がありますか?
この行を変更するだけの問題ですか?
string csvFilename = string.Format("Platypus{0}.csv", dbContextAsInt);
...これに:
string csvFilename = string.Format(@"\Platypi\Platypus{0}.csv", dbContextAsInt);
?
IISフォルダーの場合、アプリケーションにはそこに書き込む権限があります。App_Dataフォルダーにファイルを書き込むことをお勧めします。
IISアプリケーションフォルダーの外にファイルを保存する場合は、IISアプリケーションプール(デフォルトではNETWORKSERVICEだと思います)のサービスアカウントを指定する必要があります)そのフォルダに対する適切な権限。
B. Clay Shannonの要求に応じて、私の実装:
string fullSavePath = HttpContext.Current.Server.MapPath(string.Format("~/App_Data/Platypus{0}.csv", dbContextAsInt));
PatrickHofmanに感謝します。これは私が使用している正確なコードであり、プロジェクトのApp_Dataフォルダーに保存されます。
public static string appDataFolder = HttpContext.Current.Server.MapPath("~/App_Data/");
. . .
string csvFilename = string.Format("Platypus{0}.csv", dbContextAsInt);
string fullSavePath = string.Format("{0}{1}", appDataFolder, csvFilename);