Требуется руководство по услуге отдыха wcf 4, основанное на расширении шаблона 40 (CS) REST WCF в VS2010. Я провел последние пару дней, пытаясь заставить этого пиджака работать, просматривая другие посты, и, хотя я приблизился, я не могу пересечь финишную черту. После большого разочарования, он, наконец, попадает в службу и публикует (используя построитель запросов fiddler), но параметр метода выглядит как нулевой, но он правильно устанавливается в построителе запросов. Я предполагаю, что это может быть проблема конфигурации в этот момент, но по мере приближения крайнего срока у меня заканчивается время для дополнительных исследований. FWIW, при отладке переменная jsonstring равна нулю. Само собой разумеется, вопрос типа нуба, так как это первый раз для меня через 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: "