C# クライアント側アプリの作成を検討しています。このアプリでは、ファイルをサーバーにアップロードし、サーバーに文字列 (アップロードされたファイルの一意の識別子) で応答させる必要があります。
私は C# と ASP.Net MVC の両方に精通しており、慣れています。これらのテクノロジを使用して比較的安全な方法でこれを行うことはできますか? それとも、ある種の WCF Web サービスのようなものを追求する必要がありますか? (アップロードされたものは機密ではなく、ミッション クリティカルではないため、「比較的安全」であることに注意してください)
どちらの場合でも、トピックに関するリソースは (たとえそれが VB.Net にあったとしても) すばらしいでしょう。
どうもありがとうございました!
編集: いくつかのコードを投稿します。ファイル付きの POST を受け入れるイベントを 1 つだけ設定した単純な Web サイトを作成しました。
[HttpPost]
public string Upload(HttpPostedFileBase file)
{
string sPath = "";
if (file != null && file.ContentLength > 0)
{
try
{
string sFileName = "test.txt";
// Save file
sPath = Path.Combine(Server.MapPath("~/App_Data/uploads"), sFileName).ToString();
file.SaveAs(sPath);
// Return val
return sPath;
}
catch
{
return "Error on Save .. tried to save to\n" + sPath;
}
}
return "no file";
}
クライアント側では、C# アプリは次のことを行います。
using (WebClient wc = new WebClient())
{
try
{
byte[] bResponse = wc.UploadFile("http://127.0.0.1/ISSHost/file/upload", "POST", "C:\\test.txt");
string sResponse = System.Text.Encoding.ASCII.GetString(bResponse);
MessageBox.Show("\nResponse received: " + sResponse);
}
catch(Exception exception)
{
string sError = exception.ToString();
if (exception.InnerException != null)
sError += "\n" + exception.InnerException.ToString();
MessageBox.Show("Error!\n" + sError);
}
}
this.Dispose();
}
できます。私が知りたいのは、これについて完全に間違った方法で行っているか、またはどのような種類のセキュリティ上の欠陥を公開している可能性があるか...などです。このようにすることでどのような影響が生じましたか? より良い方法はありますか?
さらに重要なことは、エンドユーザーがアップロードページに移動しようとするのを防ぐにはどうすればよいですか (この場合、http://127.0.0.1/ISSHost/file/upload
実際にはページに「GET」部分がないため、404 だけです)。
再度、感謝します!