使用WCF REST服务上载文件

时间:2011-04-15 12:02:15

标签: c# wcf rest

我是WCF和Rest服务的新手,并尝试从我在网上找到的帖子中做一些实现,但我仍然遇到一些问题。

让我解释一下我的情景。

我有一个WPF应用程序,在其中我有一个反馈表单,客户端可以填写,附加一些屏幕截图,然后发送它。现在我的想法是将所有这些信息收集到XML文件中,我已经成功完成了,然后将这个XML文件上传到我的服务器上的特定文件夹中。

现在据我所知,客户端应用程序必须有一个POST方法将流发布到服务器,然后我应该在服务器上有一个aspx页面来解码我从POST获得的流,并制定我的XML文件,然后将其保存在文件夹中,如果我错了,请纠正我。

目前我已在客户端上实现了如下代码: -

    public static void UploadFile()
    {
        serverPath = "http://localhost:3402/GetResponse.aspx";

        filePath = "C:\\Testing\\UploadFile\\UploadFile\\asd_asd_Feedback.xml";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverPath);

        //request.MediaType = "text/xml";

        request.ContentType = "text/xml";

        //request.Method = "POST";

        request.Method = "POST";

        //request.ContentLength = contentLength;

        //request.ContentType = "application/x-www-form-urlencoded";  

        using (FileStream fileStream = File.OpenRead(filePath))

        using (Stream requestStream = request.GetRequestStream())
        {
           int bufferSize = 1024;

            byte[] buffer = new byte[bufferSize];

            int byteCount = 0;

            while ((byteCount = fileStream.Read(buffer, 0, bufferSize)) > 0)
            {
               requestStream.Write(buffer, 0, byteCount);

            }
        }

        string result = String.Empty;

        try
        {
           using (WebResponse response = request.GetResponse())

            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
           {
                result = reader.ReadToEnd();
            }
        }
        catch (Exception exc)
        { 

        }
        if (result == "OK")
        {

        }
        else
        {
            // error...

        }
    } 

现在我如何将requestStream传递给GetResponse.aspx页面?这是正确的方法吗?

感谢您的帮助和时间

1 个答案:

答案 0 :(得分:0)

我不明白你的代码试图做什么。您是否考虑过实际使用WCF客户端和WCF服务来进行实际上传?

有一个样本可以做到这一点! This blog post details如何在服务端使用编程模型,this follow-up blog post详细说明了如何在客户端使用它。我已经看到它在文件上传和图像传输方案中使用了很多,所以它也可能对你的情况有所帮助!这些博客文章中的示例是文件上载文件。

希望这有帮助!