从字节数组获取Json输出

时间:2013-05-30 21:35:34

标签: c# json wcf rest serialization

我刚刚开始了一个关于WCF的新项目,说实话,我对此非常陌生,知识有限。

所以我要做的是打开存储在我的计算机中的文件(例如word,pdf等),并以JSon格式显示网页中的内容。我将文件转换为字节数组并尝试显示Stream。当我这样做时,它要求我打开文件或保存它。我不希望这样 - 我只是想在调用方法时将文件的内容显示在我的本地主机上。

这就是我所拥有的:

public string GetRawFile()
    {
        string file = @"C:\.....\TestFile.pdf";
        byte[] rawFile = File.ReadAllBytes(file);


        //Stream stream = new MemoryStream(rawFile);
        //DataContractJsonSerializer obj = newDataContractJsonSerializer(typeof(string));
        //string result = obj.ReadObject(stream).ToString();

        //Deserializing
        MemoryStream stream = new MemoryStream();
        BinaryFormatter binForm = new BinaryFormatter();
        stream.Write(rawFile, 0, rawFile.Length);

        stream.Seek(0, SeekOrigin.Begin);
        Object obj = (Object) binForm.Deserialize(stream);

        System.Web.Script.Serialization.JavaScriptSerializer xyz = new System.Web.Script.Serialization.JavaScriptSerializer();
        string ejson = xyz.Serialize(obj);

        WebOperationContext.Current.OutgoingRequest.ContentType = "text/json";
        return ejson;
    }

我正在尝试返回一个字符串并且它不起作用,但是当我只返回流时,它会弹出“openwith”消息。

我也应该在我的datacontract上使用GETPOST。我在C#中使用REST。

1 个答案:

答案 0 :(得分:0)

我假设你的文件实际上包含json。如果是这样的话就这样做;

string file = File.ReadAllText("C:\path\to\file.extension");

你使这个问题变得比它需要的复杂得多。只需读取文件并将其作为字符串返回。我想你想使用GET作为http方法。一般来说,如果你要添加新内容,你们都会使用帖子。例如,如果用户请求会导致应用程序将某些数据写入文件或数据库,那么您通常会使用POST作为http方法。如果他们只是请求数据,你几乎总是使用GET。