WCF Restful服务无法将PDF文件转换为MemoryStream或ByteArray

hi_shobhit82

新成员
已加入
2016年11月3日
留言内容
1
地点
印度马哈拉施特拉邦浦那
编程经验
5-10
服务:WCF REST服务(.Net Framework 4.0)
平台:64位(Windows)

你好

我有一个WCF Rest服务来获取数据并将其显示在客户端屏幕上。我正在使用一个节点js客户端应用程序,该应用程序主要使用javascript来获取此pdf内存流,然后将其显示在客户端计算机上。

我正在尝试在wcf restful服务中读取PDF文件,并将其作为内存流发送,并在客户端计算机上打开PDF,但到目前为止还无法完成。需要您的帮助来实现相同目标。下面是代码:


WCF服务方法合同定义

C#:
[COLOR=#303336][FONT=Consolas][[/FONT][/COLOR][COLOR=#2B91AF][FONT=Consolas]OperationContract[/FONT][/COLOR][COLOR=#303336][FONT=Consolas]]
[/FONT][/COLOR][COLOR=#303336][FONT=Consolas][[/FONT][/COLOR][COLOR=#2B91AF][FONT=Consolas]WebGet[/FONT][/COLOR][COLOR=#303336][FONT=Consolas]([/FONT][/COLOR][COLOR=#2B91AF][FONT=Consolas]ResponseFormat[/FONT][/COLOR][COLOR=#303336][FONT=Consolas]=[/FONT][/COLOR][COLOR=#2B91AF][FONT=Consolas]WebMessageFormat[/FONT][/COLOR][COLOR=#303336][FONT=Consolas].[/FONT][/COLOR][COLOR=#2B91AF][FONT=Consolas]Json[/FONT][/COLOR][COLOR=#303336][FONT=Consolas])]
[/FONT][/COLOR][COLOR=#2B91AF][FONT=Consolas] MemoryStream  [/FONT][/COLOR][COLOR=#2B91AF][FONT=Consolas]GetPDF[/FONT][/COLOR][COLOR=#303336][FONT=Consolas]([/FONT][/COLOR][COLOR=#101094][FONT=Consolas]string[/FONT][/COLOR][COLOR=#303336][FONT=Consolas] empid[/FONT][/COLOR][COLOR=#303336][FONT=Consolas]);
[/FONT][/COLOR]

WCF服务端代码

C#:
[COLOR=#101094]    public [/COLOR][COLOR=#2B91AF]MemoryStream  [/COLOR][COLOR=#2B91AF]GetPDF[/COLOR][COLOR=#303336]([/COLOR][COLOR=#101094]string[/COLOR][COLOR=#303336] empid[/COLOR][COLOR=#303336])[/COLOR][COLOR=#303336]
    [/COLOR][COLOR=#303336]{[/COLOR][COLOR=#303336]
        [/COLOR][COLOR=#101094]string[/COLOR][COLOR=#303336] pdf格式Name [/COLOR][COLOR=#303336]=[/COLOR][COLOR=#7D2727]"myfile.pdf"[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
        [/COLOR][COLOR=#101094]byte[/COLOR][COLOR=#303336][][/COLOR][COLOR=#303336] bytes [/COLOR][COLOR=#303336]=[/COLOR][COLOR=#2B91AF]File[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]ReadAllBytes[/COLOR][COLOR=#303336]([/COLOR][COLOR=#7D2727]@"C:\working\myfile.pdf"[/COLOR][COLOR=#303336]);[/COLOR][COLOR=#303336]
        [/COLOR][COLOR=#858C93]/*
         have also tried the below code for reading the bytes with different encoding :-
               Encoding.UTF8.GetBytes(@"C:\working\myfile.pdf") 
         but even that doesn't work
        */[/COLOR][COLOR=#303336]
        [/COLOR][COLOR=#2B91AF]MemoryStream[/COLOR][COLOR=#303336] ms [/COLOR][COLOR=#303336]=[/COLOR][COLOR=#101094]new [/COLOR][COLOR=#2B91AF]MemoryStream[/COLOR][COLOR=#303336]();[/COLOR][COLOR=#303336]
        ms[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]Write[/COLOR][COLOR=#303336]([/COLOR][COLOR=#303336]bytes[/COLOR][COLOR=#303336],[/COLOR][COLOR=#7D2727]0[/COLOR][COLOR=#303336],[/COLOR][COLOR=#303336] bytes[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]Length[/COLOR][COLOR=#303336]-[/COLOR][COLOR=#7D2727]1[/COLOR][COLOR=#303336]);[/COLOR][COLOR=#303336]
        ms[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]Position[/COLOR][COLOR=#303336]=[/COLOR][COLOR=#7D2727]0[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
        [/COLOR][COLOR=#2B91AF]WebOperationContext[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]Current[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]OutgoingResponse[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]ContentType[/COLOR][COLOR=#303336]=[/COLOR][COLOR=#7D2727]"application/pdf"[/COLOR][COLOR=#303336];[/COLOR][COLOR=#303336]
        [/COLOR][COLOR=#2B91AF]WebOperationContext[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]Current[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]OutgoingResponse[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]Headers[/COLOR][COLOR=#303336].[/COLOR][COLOR=#2B91AF]Add[/COLOR][COLOR=#303336]([/COLOR][COLOR=#7D2727]"Content-disposition"[/COLOR][COLOR=#303336],[/COLOR][COLOR=#7D2727]"inline; filename="[/COLOR][COLOR=#303336]+[/COLOR][COLOR=#303336] pdf格式Name[/COLOR][COLOR=#303336]);[/COLOR][COLOR=#303336]
        [/COLOR][COLOR=#101094]return[/COLOR][COLOR=#303336] ms[/COLOR][COLOR=#303336];[/COLOR][COLOR=#858C93]//ms.Length = 4658228
[/COLOR][COLOR=#303336]}
[/COLOR]
当我尝试在URL的帮助下直接在浏览器中调用此方法时,会引发如下错误,而应在浏览器中打开PDF:
w5aFa.jpg

不知道这是否应该是正确的行为。您能否让我知道这里出了什么问题。
 
最佳 底部