Не происходит маппинг параметров в анонимном веб-сервисе
Добрый день! Создал по инструкции веб-сервис, опубликовал его на проде, так же по той же инструкции тех. поддержка Terrasoft зарегистрировала мне этот анонимный веб-сервис, т.к. прод находится в облаке. После отправки запроса на сервис, заметил, что параметры, которые я передаю в итоге оказываются пустыми (в случае, если передаю Guid, то в сервисе обрабатывается пустой Guid, если передаю строку, то обрабатывается пустая строка)
Код сервиса:
namespace Terrasoft.Configuration.UsrUnsubscribeFromNewslettersService { using System; using System.IO; using System.Net; using System.Collections.Generic; using System.ServiceModel; using System.ServiceModel.Web; using System.ServiceModel.Activation; using Terrasoft.Web.Common; using Terrasoft.Common; using Terrasoft.Core.Entities; using Terrasoft.Core; using Terrasoft.Core.Process; using Terrasoft.Core.Process.Configuration; using Newtonsoft.Json; [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class UsrUnsubscribeFromNewslettersService: BaseService { private SystemUserConnection _systemUserConnection; private SystemUserConnection SystemUserConnection { get { return _systemUserConnection ?? (_systemUserConnection = (SystemUserConnection)AppConnection.SystemUserConnection); } } [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] public UnsubscribeRequest UnsubscribeFromNewsletters(UnsubscribeRequest request){ SessionHelper.SpecifyWebOperationIdentity(HttpContextAccessor.GetInstance(), SystemUserConnection.CurrentUser); ProcessSchema schema = SystemUserConnection.ProcessSchemaManager.GetInstanceByName("UsrUnsubscribeUserFromNewsletters"); var flowEngine = new FlowEngine(SystemUserConnection); var param = new Dictionary<string, object>(); param["ContactId"] = request.ContactId; param["NewslettersId"] = request.NewslettersId; flowEngine.RunProcess(schema, param); return request; } } public class UnsubscribeRequest { public Guid ContactId {get; set;} public Guid NewslettersId {get; set;} } }
Если переделать POST на GET, то сервис работает.
Нравится
Сергей, при регистрации в системе веб-сервиса он должен так же само работать, как и вне сайта 7.Х.
Попробуйте создать в Visual Studio отдельный проект и создать аналогичный сервис в нём.
Если там будет такая же ошибка, в Visual Studio можно будет произвести отладку.
Возможно, Вы неправильно оформили метод и параметры.
Также обратите внимание на тему с похожими симптомами:
https://stackoverflow.com/questions/6835872/wcf-rest-post-of-json-parameter-is-empty
Сергей, при регистрации в системе веб-сервиса он должен так же само работать, как и вне сайта 7.Х.
Попробуйте создать в Visual Studio отдельный проект и создать аналогичный сервис в нём.
Если там будет такая же ошибка, в Visual Studio можно будет произвести отладку.
Возможно, Вы неправильно оформили метод и параметры.
Также обратите внимание на тему с похожими симптомами:
https://stackoverflow.com/questions/6835872/wcf-rest-post-of-json-parameter-is-empty
Спасибо за ответ, проблема была в том, что для класса UnsubscribeRequest и пропертей внутри него не были добавлены атрибуты DataContract и DataMember соответственно