Я сделал службу WCF на платформе .NET 4, что, когда я ударил ее с помощью jQuery ajax POST, он возвращает JSON. Проблема в том, что я бы предпочел, чтобы json-ответ POST не был завернут в имя метода с суффиксом результата.Bare Json ответ службы WCF в C#
Подробно:
public interface IService
{
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
Person GetInfo(string id);
}
[AspNetCompatibilityRequirements(RequirementsMode
= AspNetCompatibilityRequirementsMode.Allowed)]
public class Service: Iservice
{
public Person GetInfo(string id)
{
...
return new Person();
}
}
public class Person
{
public string FirstName;
public string LastName;
public Person(){
FirstName = "Jon";
LastName = "Doe";
}
}
web.config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="EndpBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceBehavior" name="Service">
<endpoint address="" binding="webHttpBinding"
contract="IService" behaviorConfiguration="EndpBehavior"/>
</service>
</services>
</system.serviceModel>
JQuery:
var myparameters = JSON.stringify({ id: $('#id').val()});
$.ajax({
type: "POST",
url: "/Service.svc/GetInfo",
data:myparameters,
contentType: "application/json",
dataType: "json",
success: function (response) {
...
}
}
});
С BodyStyle = WebMessageBodyStyle.Wrapped
Ответа получить в моем яваскрипта код:
{"GetInfoResult" : {"FirstName":"Jon", "LastName":"Doe"}}
Но когда я изменить его WebMessageBodyStyle.Bare
и все остальное остается неизменным, 500 внутренних ошибок сервера имеет место.
Можно ли вернуть Bare json в мой ответ POST без метода + Результат? Если да, то что я делаю неправильно?
Заранее спасибо