1
我想使用Web API爲要使用的應用程序構建一些端點。我希望它做的第一件工作是允許客戶端上傳文件到服務器。將.NET應用程序中的文件上傳到Web API POST端點
客戶端將運行某種.NET應用程序,也許是一個控制檯應用程序或其他東西。它不會是使用表單元素或文件輸入的網頁。
我認爲在Web API會是這個樣子:
public class FileController : ApiController
{
public bool Post(File newFile)
{
return true;
}
}
以此爲模型類:
public class File
{
public string name { get; set; }
public Stream uploadStream { get; set; }
}
我敢肯定,這是可怕的錯誤,但它是我的第一個Web API。
我想在一個控制檯應用程序來測試這一點:
namespace TestFileUpload
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting the test...");
using (FileStream readstream = new FileStream(@"C:\\Test\Test2.txt", FileMode.Open, FileAccess.Read))
{
WebAPI.Classes.File newFile = new WebAPI.Classes.File()
{
name = "Test.txt",
uploadStream = readstream
};
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:50326");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response;
response = client.PostAsJsonAsync("http://localhost:50326/api/file", newFile).Result;
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
};
Console.ReadLine();
}
}
}
現在我得到一個超時錯誤,當我試圖得到響應: 「錯誤獲得價值從‘ReadTimeout’上' System.IO.FileStream」。」
幫助?
謝謝。請參閱最新的問題;我現在正在使用您指出的建議,但我沒有看到任何HTTP請求。 –
首先,基地址看起來不對。它應該只是基地,如「http:// localhost:50326」。其次,必須有一個異常,或者Result屬性應該將我們指向哪裏出錯。他們說什麼?它很難猜測... –
更新了問題。我在FileStream上發生異常。 –