1

我想使用 Web API 构建一些端点供应用程序使用。我希望它做的第一项工作是允许客户端将文件上传到服务器。

客户端将运行某种 .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();
        }
    }
}

现在,当我尝试获取响应时出现超时错误:“从 'System.IO.FileStream' 上的 'ReadTimeout' 获取值时出错。”

帮助?

4

1 回答 1

0

客户端使用 Web API 服务的方法有很多,但最直接的方法是使用 Web api 客户端库。也许您应该考虑构建一个简单的 get 方法,该方法在跳转到文件上传之前返回一个对象。

来自 .NET 客户端的 Web API

您不能添加服务引用,因为 Web API 不公开 wsdl。

于 2013-10-22T16:09:37.907 回答