0

我刚刚开始了一个关于 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”消息。

我也应该在我的数据合同上使用GETor POST。我在 C# 中使用 REST。

4

1 回答 1

0

我假设您的文件实际上包含 json。如果是这种情况,就这样做;

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

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

于 2013-05-30T21:47:42.973 回答