@timusKul

Почему Wcf возвращает пустое тело ответа?

сразу скажу - в c# и .Net не сильно хорошо разбираюсь.
есть сервис WCF Rest (targetFramework="4.5.2")

один из методов возвращает Stream, ну или должен возвращать.

создал для проверки метод с одним строковым входным параметром - все нормально, а с двумя строковыми параметрами - пустое тело ответа.
данный метод возвращает данные
[OperationContract]
[WebInvoke(Method = "GET",
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/pdf/{fname}")]
Stream getPDFile(string fname);
public Stream getPDFile(string fname)
{
return fs.getfile(fname);
}
а метод у которого 2 параметра приходят на вход - пустое тело. при этом статус ответа - 200 OK.
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/pdf/{fname}?token={token}")]
Stream Pdf(string token, string fname);

public Stream Pdf(string token, string fname)
{
dataclass dc = dcList.SingleOrDefault(x => x.Token == token);
string fnameB = dc.PdfFile.ToString();

return fs.getfile(fnameB);
}

к сервису обращаются из PHP. тестировал с помощью небольшого приложения
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 2
@dmitryKovalskiy
программист средней руки
Будем честны - вы не просто добавили один параметр в адресную строку, а всю логику переписали. Вы запрашиваете Stream уже для файла с другим именем. Исходя из этого данное поведение может быть даже правильным в рамках описанной логики..
Ответ написан
@timusKul Автор вопроса
если сделать вот так: UriTemplate = "/pdf/{fname}/{token}", то все работает корректно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы