Коллеги подскажите пожалуйста можно ли использовать описанный ниже подход и не будет ли в будущем проблем с поддержкой сервиса. Если есть более корректные способы реализации - буду благодарен

 

Задача. Нужна Web-форма для заполнения информации в браузере неавторизованними посетителями. Результат заполнения формы надо сохранять в записях в разделе в системе. По аналогии с лендингами но к маркетингу отношения не имеет и лицензий маркетинга на системе нет.

 

Планируем следующую реализацию.

Пользователь отправляет Get запрос на анонимный веб сервис и он возвращает ему html страничку с формой и кнопкой отправить где будет Get запрос на этот же сервис но с другими параметрами запроса

Нравится

1 комментарий

Добрый день.



Вы можете воспользоваться примером из академии:

https://academy.terrasoft.ua/docs/developer/komponenty_prilozheniya/len…

Показать все комментарии

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

Нравится

2 комментария
Лучший ответ

Сергей, при регистрации в системе веб-сервиса он должен так же само работать, как и вне сайта 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 соответственно

Показать все комментарии