从ASP.NET控制器下载C#Webclient

从ASP.NET控制器下载C#Webclient,c#,asp.net,download,webclient,C#,Asp.net,Download,Webclient,我在ASP.NET、WinForms和WebClient上玩得很开心。因此,我使用ASP.NET应用程序作为桌面应用程序的后端通信,在将数据发送到控制器后,我成功地从控制器返回简单的字符串/整数值,但当我尝试将整个对象作为文件返回时,内容返回为空(但它确实在响应中显示了自定义内容类型)。下面是我的代码,我是否做错了什么?(第一次像这样处理webclient:) 控制器 [AllowAnonymous] [HttpGet] public APIRegister(....) { // ....

我在ASP.NET、WinForms和WebClient上玩得很开心。因此,我使用ASP.NET应用程序作为桌面应用程序的后端通信,在将数据发送到控制器后,我成功地从控制器返回简单的字符串/整数值,但当我尝试将整个对象作为文件返回时,内容返回为空(但它确实在响应中显示了自定义内容类型)。下面是我的代码,我是否做错了什么?(第一次像这样处理webclient:)

控制器

[AllowAnonymous]
[HttpGet]
public APIRegister(....)
{
   // ..... Create User Account / etc .....
   return File(Methods.Conversions.ObjectToArray(SomeData), "application/custom");
}
“ObjectToArray”方法只是将对象转换为字节数组

客户

HttpWebRequest WR = (HttpWebRequest)HttpWebRequest.Create(MyUrl/Account/APIRegister?Params...);
byte[] RawResponse = new byte[0];
using (HttpWebResponse WD = (HttpWebResponse)WR.GetResponse())
{
    Stream SR = WD.GetResponseStream();
    RawResponse = Methods.Conversions.StreamToArray(SR);
}

内容始终返回长度为零,但它确实保留了“application/custom”的内容头类型,因此它返回的只是实际内容本身。感谢您的帮助

根据费德里科的评论,决定尝试将“小”分开更好/更可行将数据转换为JSON请求与使用HTTP GET file方法相比。

目前还完全不清楚Methods.Conversions.StreamToArray是如何工作的,从外观上看,我怀疑它是否能够获得分配给SR的流。编辑后的结果包括流被传递给该方法,但考虑到该方法的内容长度,我认为这并不重要响应本身为0,因此除了“应用程序/自定义”的内容类型之外,不会从控制器返回任何数据。为什么要返回文件而不是数据。您可以以json格式返回数据,并将其反序列化到Windows应用程序中的对象。图像和文件与对象完全不同。您确实应该将这两种情况分开,json的存在是有原因的,返回序列化为字节数组的对象不仅效率低下,而且完全破坏了互操作性的概念。在这种情况下,是的,这是正确的方法。