мое обслуживание было определено:ФОС Restful Сервис предоставляет метод Не допускается или Bad Request
[ServiceContract(ProtectionLevel = ProtectionLevel.None)]
[XmlSerializerFormat]
public interface IMSMService
{
[OperationContract(IsOneWay = false)]
[WebInvoke(Method = "POST", UriTemplate = "GetProducts", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
ProductsResponse GetProducts(ProductsRequest request);
}
и заголовок метода имеет вид:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MSMService : IMSMService
{.....
я запустить службу, а затем в клиенте app Я делаю ссылку на службу к процессу wcf. В моем тестовом проекте для клиента у меня есть следующий тест.
[Test]
public void CallWCFRestful()
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ProductsRequest));
MemoryStream stream = new MemoryStream();
xmlSerializer.Serialize(stream,_productsRequest);
string data = Encoding.UTF8.GetString(stream.ToArray(), 0, (int)stream.Length);
string link = "http://localhost/WcfService/GetProducts";
var request = (HttpWebRequest)WebRequest.Create(new Uri(link));
request.ContentType = "application/soap+xml; charset=utf-8";
request.Method = "POST";
request.ContentLength = data.Length;
request.KeepAlive = true;
using (var requestStream = request.GetRequestStream())
{
var writer = new StreamWriter(requestStream);
writer.Write(data);
writer.Flush();
}
using (HttpWebResponse resp = request.GetResponse() as HttpWebResponse)
{
using (var responseStream = resp.GetResponseStream())
{
var reader = new StreamReader(responseStream);
var result = reader.ReadToEnd();
}
}
}
В коде, когда у меня работает служба, возникают ошибки при попытке установить «resp» с ошибкой неправильного запроса. Если я сделаю ctrl + щелчок на http://localhost/WcfService, тогда это покажет, что запущенная служба. Если я включу метод в соответствии со своей строкой кода, тогда я получаю метод не допустимым (я ожидал бы этого, потому что я не передаю объект). Что я сделал не так.
ссылка действительна. Я имею в виду конечную точку обслуживания? –