私は電子商取引サイトに〜3000レコードの製品CSVをアップロードすることを目標にしています。私は自分のe-commプラットフォームが提供するREST APIを利用したいので、私が作成できる将来のサイトで再利用して構築できるものがあります。私はを通じて働くトラブルを抱えていますREST API経由の一括アップロード
私の主な問題は、次のとおりです。 - 私はそれがPOSTを経由して、すべての3Kのレコードを処理するのに要する時間に属性をすることができますSystem.Threading.ThreadAbortException
要求。私のコード:
public ActionResult WriteProductsFromFile()
{
string fileNameIN = "19107.txt";
string fileNameOUT = "19107_output.txt";
string jsonUrl = $"/api/products";
List<string> ls = new List<string>();
var engine = new FileHelperAsyncEngine<Prod1>();
using (engine.BeginReadFile(fileNameIN))
{
foreach (Prod1 prod in engine)
{
outputProduct output = new outputProduct();
if (!string.IsNullOrEmpty(prod.name))
{
output.product.name = prod.name;
string productJson = JsonConvert.SerializeObject(output);
ls.Add(productJson);
}
}
}
foreach (String s in ls)
nopApiClient.Post(jsonUrl, s);
return RedirectToAction("GetProducts");
}
}
私はWebコーディングに新しいので、間違った方法をしていますか?一括アップロードする方法はありますか?
私は少しの原因に役立ちますが、私の目標の近くにどこでも私を取得していませんTaskCreationOptions.LongRunningフラグを使用しようとしました。
あなたの '' Public ActionResult WriteProductsFromFile() 'のコードは、元のリクエストが入ったスレッドを保持していることを理解しておく必要があります。クライアントの接続を切断すると、 IIS)は、相手側で何も聞いていないことを検出します。 あなたが行う必要があるのは、APIが 'start importing'メッセージを受け入れ、バックエンドの長期実行プロセス(サービス/デーモンなど)が実際にすべてのエクスポートを実行する何らかのキューイングシステムを利用することです。 – zaitsman