Я новичок в WCF, поэтому, пожалуйста, потерпите меня.
У меня есть простой сервис WCF, принимающий простые данные JSON, такие как {name: "Joe Boxer"}. Следует просто повторить переданное имя.
Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.ServiceModel.Web
Imports System.Runtime.Serialization
<ServiceContract(Namespace:="")>
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)>
Public Class Service
<Serializable()> _
<DataContract(Name:="Person")> _
Public Class Person
<DataMember(IsRequired:=True, Name:="Name")> _
Public Name As String
End Class
<OperationContract()>
<WebInvoke(requestformat:=WebMessageFormat.Json)>
Public Function GetName(ByVal p As Person) As String
Return "Your name is " & p.Name
End Function
End Class
Итак, я использовал JQuery AJAX и JSON2 для выполнения POST в WCF. Я могу видеть с помощью firebug переданные данные JSON. Однако метод GetName () всегда не может видеть переданные данные, что приводит к сбою кода, поскольку p равно нулю.
Похоже, что эта служба не может видеть переданные данные.
Что мне не хватает? Заранее благодарю за помощь.
Спасибо Прадипу за ваш ответ.
Я на самом деле отправляю сложный тип. Извините, если не дали понять. Вот как я его отправляю (упрощенно).
$.ajax( {
url: "http://localhost/wcftest/service.svc/GetName",
data: JSON.stringify({name:"Joe Boxer"}),
type: "POST",
processData: false,
contentType: "application/json; charset=UTF-8",
timeout: 10000,
dataType: "json",
success: function(res) { alert(res); },
error: function() { alert("error"); return;}
});
Я вижу в firebug {"name": "Joe Boxer"} отправляется. Но функция все еще не видит это. Я, вероятно, пропускаю что-то действительно маленькое, но я не знаю что. Я играл с этим весь день.