我有一个简单的网络服务,我想将文件上传到。问题是我需要在json中的响应。
为了在Json中获得响应,我的经验形成了我的经验,我的请求必须有一个'application / json'的内容类型。但是当然,文件上传的情况并非如此,因为内容类型必须是'multipart / form-data'。
在我的Json中,我想返回一个显示成功和文件名的值。
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public TyoeOfSomeObject UploadFile()
{
// Get the file from the context and do something with it
HttpPostedFile httpPostedFile = HttpContext.Current.Request.Files[0];
// Return either a string or an object to serialise with the required values
return SomeObject;
}
答案 0 :(得分:1)
我遇到了同样的问题,并通过设置响应的ContentType并调用响应的Write()函数来解决它:
C#
String j = jsonParser.AsJson(obj);
Context.Response.ContentType = "application/json; charset=utf-8";
Context.Response.Write(j);
VB
Dim j As String = jsonParser.AsJson(obj)
Context.Response.ContentType = "application/json; charset=utf-8"
Context.Response.Write(j)
答案 1 :(得分:0)
您可以将函数的返回类型设置为字符串,然后使用一些JSON序列化程序将对象序列化为JSON并将其作为JSON字符串返回。对于JSON序列化,我使用Jayrock我相信ASP .NET现在也有自己的JSON库。
答案 2 :(得分:0)
您可以使用byte[]
声明您的网络方法作为输出参数。然后,您可以设置ContentType
并返回所需的任何数据。
如果您使用WCF而不是ASMX Web服务,则在这种情况下您可以返回Stream
或Message
(请参阅Returning raw json (string) in wcf。您也可以尝试返回Stream
而不是{如果您的文件非常大,则在Web服务中为{1}}。可能它也适用于ASMX Web服务。
答案 3 :(得分:0)
我无法找到在json中返回响应的方法。如果不修补内部运作,我认为不可能。我使用的解决方案是创建一个可以处理文件的aspx,你可以使用OLEG描述的.ashx或WCF。