Я хочу запрограммировать простой пример «Hello world» для связи между сервисом WCF и html-страницей.Связь между WCF (ServiceHost) и HTML (JQuery)
Чтобы запрограммировать сервер WCF, я использую ниже код:
namespace ConsoleHelloWorldServiceClient
{
class Program
{
static void Main(string[] args)
{
var adrs = new Uri[1];
adrs[0] = new Uri("http://localhost:6464");
using (ServiceHost host = new ServiceHost(typeof(HelloWorld.HelloWorldService),adrs))
{
host.Open();
Console.WriteLine("Server is open");
Console.WriteLine("Press Enter to close server");
Console.ReadLine();
}
}
}
}
Привет мир Интерфейс
namespace HelloWorld
{
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
string SayHello();
}
}
Привет мирового класса
namespace HelloWorld
{
[DataContract]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class HelloWorldService : IHelloWorldService
{
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SayHello")]
public string SayHello()
{
return "Hello World!";
}
}
}
Теперь в моей HTML странице я хотел бы щелкнуть по кнопке и отобразить текст.
Затем я использую JQuery для связи со службой:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript"
src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.1.min.js">
</script>
<script type="text/javascript">
var url = 'http://localhost:6464/HelloWorldService';
$(document).ready(function() {
$("#get").click(function() {
var urlGet = url + 'SayHello';
$.getJSON(urlGet, function (data) {
$('#text').val(data);
});
});
});
</script>
</head>
<body>
<input id="text" type="text" value="Hello" />
<input id="get" type="button" value="Get" />
</body>
</html>
Но я такое ощущение, что этот клиент используется только для веб-серверов ... Как я могу это сделать?
Благодарим за помощь.
Большое спасибо за ваши комментарии. Я исправлю свой код и вернусь к вам. :) – lla
Одна нота - для конечной точки WCF для «разговора JSON» вам также нужно добавить к ней «WebHttpBehavior»: host.AddServiceEndpoint (typeof (IHelloWorldService), новый WebHttpBinding(), «») .Behaviors.Add (новый WebHttpBehavior()); ' – carlosfigueira
@ carlosfigueira Хороший улов! Я полностью пропустил это. Я обновлю ответ. – vendettamit