Написал свой Web-сервис, который выполняет хранимую процедуру в БД.
Вопрос: как зарегистрировать сервис в системе, какие строчки необходимо прописать в конфигурационных файлах
Нравится
Добавление сервиса:
В системе существует возможность написать свой WCF сервис.
1. Создаем схему "Исходный код".
2. Пример кода который содержит схема:
[csharp]
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;
}
}
}
[/csharp]
сервис содержит один тестовый метод который принимает строку и возвращает строку.
Публикуем схему
3. Вызов сервиса на стороне клиента
[javascript]
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
});
[/javascript]
Примеров в системе очень много.
ReportService, ColumnService
Александр, большое спасибо, с Web-сервисом все получилось
У меня сработал но передать данные не получилось. После добавления
[javascript]
BodyStyle = WebMessageBodyStyle.Wrapped
[/javascript]
в [javascript]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat =WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[/javascript]
и правильном задании параметра jsonData (в формате jSon):
[javascript]
jsonData: {
data: ‘some data’
}
[/javascript]
Напишите как у Вас метод принимает параметры?
Это рабочий вариант, и работает как описано выше
[csharp]
[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;
}
}
[/csharp]
Попробуйте
[javascript]
jsonData: {
data: {'name' :‘some data’}
}
[/javascript]
"Бондаренко Александр Сергеевич" написал:Попробуйте
jsonData: {
data: {'name' :‘some data’}
}
я знаю =) я просто к Вашему примеру написал=) потому что он чуток не коректный и заработает после указаных правок. И еще одно без атрибута "BodyStyle =WebMessageBodyStyle.Wrapped" не запрыгнет туда брейкпоинт
Вы изменили метод добавив атрибут, конечно он не будет работать, сервис будет по другому параметры принимать =)
На breakpoin это никак не может влиять.