Класс DomainService входит в состав
.NET RIA Services и используется в качестве базового, для классов, обменивающихся данными с Silverlight-приложениями. Но данные можно передавать и получать также с помощью XMLHttpRequest.
- Создать проект: ASP.NET Web Application
- Добавить в References: System.Web.Ria и System.Web.DomainServices
- Добавить в проект файл Class1.cs (см. ниже)
- В Web.config в httpHandlers добавить:
<add path="DataService.axd" verb="GET,POST" type="System.Web.Ria.DataServiceFactory, System.Web.Ria, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> |
- В Default.aspx заменить содержимое (см. ниже)
- Запустить приложение. В IE откроется веб-страница с двумя кнопками Operation1 и Operation2. В результате нажатия на кнопку будет создан POST запрос, который попадет в соответствующий метод в классе Test.
Результат запроса возвращается в JSON-формате:
{"__type":"DataServiceResult:DomainServices", "IsDomainServiceException":false, "ReturnValue":"Hello 123"}
[Class1.cs]
using System.Web.DomainServices; |
| public class Test : DomainService |
| public string Operation1() |
| return "Ticks: " + DateTime.Now.Ticks; |
| public string Operation2(string value) |
[Default.aspx]
<%@ Page Language="C#" %> |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
<html xmlns="http://www.w3.org/1999/xhtml"> |
<head id="Head1" runat="server"> |
| <script language="javascript" type="text/javascript"> |
| var r = new XMLHttpRequest(); |
| r.open("POST", "/DataService.axd/Cognitex-Web-Test/Operation1", false); |
| r.setRequestHeader("Content-Type", "text/json"); |
| function Operation2(value) { |
| var r = new XMLHttpRequest(); |
| r.open("POST", "/DataService.axd/Cognitex-Web-Test/Operation2", false); |
| r.setRequestHeader("Content-Type", "text/json"); |
| r.send("[\"" + value + "\"]"); |
| for (var o in r) str += o + ": " + r[o] + "<br/>"; |
| _Msg.innerHTML = str + "<hr/>" + eval("res=" + r.responseText).ReturnValue; |
| <button onclick="Trace(Operation1())">Operation1</button> |
| <input id="_Data" value="123" /><button onclick="Trace(Operation2(_Data.value))">Operation2</button> |
| <div id="_Msg" style="margin-top: 50px" /> |
Чтобы вызвать DomainService из
Fiddler'а: 1) открыть закладку Request Builder 2) в выпадающем списке выбрать POST 3) указать адрес метода, например, http://
ipv4.fiddler:5966/DataService.axd/Services-Test/Operation1 4) в поле Request Headers указать Content-Type: text/json 5) в поле Request Body указать [] 6) нажать Execute.
Для вызова метода Operation2 в поле Request Body надо указать, например, ["wow"]
Комментариев нет:
Отправить комментарий