HI Все, я искал все выше и ниже и, наконец, решил опубликовать запрос здесь.
Я пишу очень простую HTML-страницу, с которой пытаюсь вызвать службу WCF с использованием jQuery.и проанализируйте его, используя JSON.
Сервис:
IMyDemo.cs
[ServiceContract]
public interface IMyDemo
{
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json)]
Employee DoWork();
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json)]
Employee GetEmp(int age, string name);
}
[DataContract]
public class Employee
{
[DataMember]
public int EmpId { get; set; }
[DataMember]
public string EmpName { get; set; }
[DataMember]
public int EmpSalary { get; set; }
}
MyDemo.svc.cs
public Employee DoWork()
{
// Add your operation implementation here
Employee obj = new Employee() { EmpSalary = 12, EmpName = "SomeName" };
return obj;
}
public Employee GetEmp(int age, string name)
{
Employee emp = new Employee();
if (age > 0)
emp.EmpSalary = 12 + age;
if (!string.IsNullOrEmpty(name))
emp.EmpName = "Server" + name;
return emp;
}
WEb.Config
<system.serviceModel>
<services>
<service behaviorConfiguration="EmployeesBehavior" name="MySample.MyDemo">
<endpoint address="" binding="webHttpBinding" contract="MySample.IMyDemo" behaviorConfiguration="EmployeesBehavior"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="EmployeesBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="EmployeesBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
MyDemo.htm
<head>
<title></title>
<script type="text/javascript" language="javascript" src="Scripts/jquery-1.4.1.js"></script>
<script type="text/javascript" language="javascript" src="Scripts/json.js"></script>
<script type="text/javascript">
//create a global javascript object for the AJAX defaults.
debugger;
var ajaxDefaults = {};
ajaxDefaults.base = {
type: "POST",
timeout : 1000,
dataFilter: function (data) {
//see http://encosia.com/2009/06/29/never-worry-about-asp-net-ajaxs-d-again/
data = JSON.parse(data); //use the JSON2 library if you aren’t using FF3+, IE8, Safari 3/Google Chrome
return data.hasOwnProperty("d") ? data.d : data;
},
error: function (xhr) {
//see
if (!xhr) return;
if (xhr.responseText) {
var response = JSON.parse(xhr.responseText);
//console.log works in FF + Firebug only, replace this code
if (response) alert(response);
else alert("Unknown server error");
}
}
};
ajaxDefaults.json = $.extend(ajaxDefaults.base, {
//see http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/
contentType: "application/json; charset=utf-8",
dataType: "json"
});
var ops = {
baseUrl: "/MyService/MySample/MyDemo.svc/",
doWork: function () {
//see http://api.jquery.com/jQuery.extend/
var ajaxOptions = $.extend(ajaxDefaults.json, {
url: ops.baseUrl + "DoWork",
data: "{}",
success: function (msg) {
console.log("success");
console.log(typeof msg);
if (typeof msg !== "undefined") {
console.log(msg);
}
}
});
$.ajax(ajaxOptions);
return false;
},
getEmp: function () {
var ajaxOpts = $.extend(ajaxDefaults.json, {
url: ops.baseUrl + "GetEmp",
data: JSON.stringify({ age: 12, name: "NameName" }),
success: function (msg) {
$("span#lbl").html("age: " + msg.Age + "name:" + msg.Name);
}
});
$.ajax(ajaxOpts);
return false;
}
}
</script>
</head>
<body>
<span id="lbl">abc</span>
<br /><br />
<input type="button" value="GetEmployee" id="btnGetEmployee" onclick="javascript:ops.getEmp();" />
</body>
Я просто не могу запустить его.Когда я отлаживаю, я вижу ошибку, возвращаемую из вызова: «
Ошибка сервера в приложении / jQuerySample».
<h2> <i>HTTP Error 404 - Not Found.</i> </h2></span>
"
Похоже, я"Я пропускаю что-то базовое здесь.Мой пример основан на this
Я уже некоторое время пытаюсь исправить код, поэтому я хотел бы, чтобы вы посмотрели и посмотрели, можете ли вы выяснить, что это такоечто я делаю не так здесь.
Я вижу, что сервис создается, когда я просматриваю сервис в IE.Я также попытался изменить настройку, как указано здесь
Благодарим вас за помощь.Я собираюсь написать об этом в блоге, как только проблема будет решена для других разработчиков. Спасибо -Soni