带标题的Web服务

时间:2012-08-07 23:30:22

标签: c#

我正在拿起我的同事建造的原型。不幸的是,我是C#和Web服务的总菜鸟。服务中的一种方法是:

    [WebGet(UriTemplate = "GetTestData/{file}")]
    public Stream GetTestData(string file)
    {
        string fileName =
           "\\filePath" + file;
        if (File.Exists(fileName))
        {
            FileStream stream = File.OpenRead(fileName);
            if (WebOperationContext.Current != null)
            {
                WebOperationContext.Current.OutgoingResponse.ContentType = "text/.txt";
            }
            return stream;
        }
        return null;
    }

当我从我的设备输入网址时,如

http://filepath/myFile1.txt

然后我得到myFile1.txt。她说这是一项休息服务。有没有一种简单的方法可以为此添加标题,这样我就可以立即向设备发送所有数据?

就像在设备上我可以要求

http://filePath/myFiles

并获取myFile1-myFile5.txt?现在,粗略的实现是我必须单独询问每个文件。让服务器负责发送数据包似乎更好吗?还是打破她的休息服务?谢谢!

1 个答案:

答案 0 :(得分:1)

  

是否有一种简单的方法可以向此添加标题,以便我可以发送   设备所有数据一次?

我不太清楚你在这里的意思,我认为更多的背景会有所帮助。如果客户端(设备)能够接受包含多个文件的响应,这是一个常见的用例,那么其余资源可以返回多个文件。例如,您可以为:http://filePath/myFiles实现其他资源,如下所示:

[WebGet(UriTemplate = "myFiles")]
public Stream GetAllTestData()
{
   // get all files, merge into stream and return.
}

此外,在您提供的示例中,为了更加RESTful,Content-Type应该是“text / plain”而不是“text / .txt”,而不是在找不到具有404状态的WebException时返回null代码应该被提出。