我刚刚开始了一个关于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上使用GET
或POST
。我在C#中使用REST。
答案 0 :(得分:0)
我假设你的文件实际上包含json。如果是这样的话就这样做;
string file = File.ReadAllText("C:\path\to\file.extension");
你使这个问题变得比它需要的复杂得多。只需读取文件并将其作为字符串返回。我想你想使用GET作为http方法。一般来说,如果你要添加新内容,你们都会使用帖子。例如,如果用户请求会导致应用程序将某些数据写入文件或数据库,那么您通常会使用POST作为http方法。如果他们只是请求数据,你几乎总是使用GET。