Не происходит маппинг параметров в анонимном веб-сервисе
Добрый день! Создал по инструкции веб-сервис, опубликовал его на проде, так же по той же инструкции тех. поддержка 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();
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 соответственно