Невозможно загрузить файл в веб-сервис и получить ответ в формате Json - PullRequest
1 голос
/ 10 августа 2010

У меня есть простой веб-сервис, в который я хотел бы загрузить файл.Проблема в том, что мне нужен ответ в 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;
}

Ответы [ 4 ]

1 голос
/ 29 марта 2014

У меня возникла та же проблема, и я решил ее, установив 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)
0 голосов
/ 10 августа 2010

Вы можете объявить свой веб-метод с byte[] в качестве выходного параметра.Затем вы можете установить ContentType и вернуть любые данные.

Если вы используете WCF вместо веб-службы ASMX, вы можете вернуть Stream или Message в таких случаях (см. Возвращение необработанного json(строка) в wcf . Вы также можете попытаться вернуть Stream вместо byte[] в веб-сервисе, если ваш файл очень большой. Возможно, он также будет работать с веб-сервисом ASMX.

Сериализация веб-службы ASP.Net

0 голосов
/ 11 августа 2010

Мне не удалось найти способ вернуть ответ в json. Я не думаю, что это возможно без работы с внутренней работой. Решением, которое я использовал, было создание aspx, который мог бы обрабатывать файл, вы можете использовать .ashx или WCF, как описано в OLEG.

0 голосов
/ 10 августа 2010

Вы можете установить тип возвращаемого значения вашей функции в строку, а затем использовать некоторый сериализатор JSON для сериализации вашего объекта в JSON и возврата его в виде строки JSON.Для сериализации JSON я использую Jayrock Я считаю, что ASP .NET теперь также имеет свои собственные библиотеки JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...