сразу скажу - в 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. тестировал с помощью небольшого приложения
Будем честны - вы не просто добавили один параметр в адресную строку, а всю логику переписали. Вы запрашиваете Stream уже для файла с другим именем. Исходя из этого данное поведение может быть даже правильным в рамках описанной логики..
допустим, если сделать вот так:
public Stream Pdf(string token, string fname)
{
return fs.getfile(fname);
}
то есть, запрашиваем Stream для файла с тем же именем - то таже самая картина,