Написал свой Web-сервис, который выполняет хранимую процедуру в БД.
Вопрос: как зарегистрировать сервис в системе, какие строчки необходимо прописать в конфигурационных файлах
Нравится
Добавление сервиса:
В системе существует возможность написать свой WCF сервис.
1. Создаем схему "Исходный код".
2. Пример кода который содержит схема:
namespace Terrasoft.Configuration.CommandLineService { using System.CodeDom.Compiler; using System.ServiceModel; using System.ServiceModel.Web; using System.ServiceModel.Activation; using System.Web; using Terrasoft.Common; using Terrasoft.Core; using Terrasoft.Core.DB; using Terrasoft.Core.Entities; using Terrasoft.Core.Store; using System; using System.Data; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json.Linq; [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class TestService { [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] public string TestServiceMethod(string data) { var userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"]; string key = string.Format("ExportFilterKey_{0}", Guid.NewGuid()); userConnection.SessionData[key] = data; return key; } } }
сервис содержит один тестовый метод который принимает строку и возвращает строку.
Публикуем схему
3. Вызов сервиса на стороне клиента
var request = Terrasoft.AjaxProvider.request({ url: "../rest/TestService/TestServiceMethod", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, method: 'POST', jsonData: 'test data', callback: function(request, success, response) { if (success) { console.log(response.responseText); } }, scope: this });
Примеров в системе очень много.
ReportService, ColumnService
Александр, большое спасибо, с Web-сервисом все получилось
У меня сработал но передать данные не получилось. После добавления
BodyStyle = WebMessageBodyStyle.Wrapped
в
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat =WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
и правильном задании параметра jsonData (в формате jSon):
jsonData: { data: ‘some data’ }
Напишите как у Вас метод принимает параметры?
Это рабочий вариант, и работает как описано выше
[ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class ITS_Servises { [OperationContract] [WebInvoke(Method = "POST", BodyStyle =WebMessageBodyStyle.Wrapped, RequestFormat =WebMessageFormat.Json, ResponseFormat = ebMessageFormat.Json)] public string SendDataTest (string name) { return name; } }
Попробуйте
jsonData: { data: {'name' :‘some data’} }
"Бондаренко Александр Сергеевич" написал:Попробуйте
jsonData: {
data: {'name' :‘some data’}
}
я знаю =) я просто к Вашему примеру написал=) потому что он чуток не коректный и заработает после указаных правок. И еще одно без атрибута "BodyStyle =WebMessageBodyStyle.Wrapped" не запрыгнет туда брейкпоинт
Вы изменили метод добавив атрибут, конечно он не будет работать, сервис будет по другому параметры принимать =)
На breakpoin это никак не может влиять.