Я пытался создать простой веб-сервис WCF RESTful, но, похоже, он работает только в режиме SOAP. Я размещаю свой сервис в местном IIS.
выглядит действительно стандартно:
[ServiceContract]
public interface IMyService
{
[OperationContract]
Guid Login(string username, string password);
...
и
public class MyService : IMyService
{
[WebGet(UriTemplate = "login?user={user}&password={password}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
public Guid Login(string username, string password)
{
return Guid.Empty;
}
Я также включил поведение в файл конфигурации и использовал его в:
<endpoint address="" binding="webHttpBinding" contract="MyService" behaviorConfiguration="webHttp"/>
согласно всем известным мне примерам ...
Теперь дело в том, что при вызове имени входа из клиента-заглушки, который использует ServiceReference, в Fiddler он выглядит просто отлично, но это SOAPy.
По какой-то причине я не могу вызвать мой сервис RESTy способом, даже / help, похоже, возвращает 400 неверных запросов.
(Я вызываю http://localhost:8080/MyService.svc/help или / login и т. Д.)
Что мешает REST принять меры?
Заранее спасибо:)
Редактировать: я нашел ответ.
Оказывается, нужно определить Маршруты ...
После добавления этого в Global.asax:
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("MyService",
new WebServiceHostFactory(), typeof(MyService)));
}
Все прошло хорошо.
Плюс я заработал, что ".svc" теперь не является частью URL.