Ищите некоторые рекомендации по службе wcf 4 rest, которая основана на расширении WCF REST Template 40 (CS) в VS2010. Я провел последние пару дней, пытаясь заставить этого педераста работать, просматривая другие сообщения, и, пока я закрылся, я не могу пересечь финишную черту. После большого разочарования он, наконец, попадает на службу и проводку (используя построитель запросов на скрипач), но параметр метода встречается как null, но он правильно устанавливается в построителе запросов. Я предполагаю, что это может быть проблема с конфигурацией на данный момент, но по мере того, как наступает срок, у меня заканчивается время для дополнительных исследований. FWIW, при отладке переменная jsonstring имеет значение null. Я, по общему признанию, являюсь вопросом noob, поскольку это первый раз через REST для меня, любая помощь была бы высоко оценена!
Спасибо заранее.
web.config
<system.web>
'<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
Global.asax.cs
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
private void RegisterRoutes()
{
RouteTable.Routes.Add(new ServiceRoute("Scoring", new WebServiceHostFactory(), typeof(ScoringSvc)));
}
}
Код службы
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class ScoringSvc
{
[OperationContract]
[WebInvoke
(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json)]
public string BOB(string jsonstring)
{
return "Received: " + jsonstring;
}
}
Заголовок запроса Fiddler
Host: localhost
Content-Length: 20
Content-Type: application/json; charset=UTF-8
запрос тела
{"Name":"Frank"}
Сырой ответ от скрипача
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 12
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 21 Mar 2011 21:31:14 GMT
"Received: "