#asp.net-mvc #wcf #c#-4.0
#asp.net-mvc #wcf #c #-4.0
Вопрос:
У меня есть простой класс, который содержит требуемые свойства для запроса к сервису.
Я хочу, чтобы потребитель создал экземпляр этого класса на своей стороне, заполнил его, а затем передал обратно в службу. Возможно, терминология, которую я использую, не совсем правильная, но я уверен, что в прошлом я читал некоторые заметки по проекту, где это было возможно в других системах.
[DataContract]
public class SearchRequestObject
{
[DataMember]
public string WebsiteGuid { get; set; }
}
В моем сервисном проекте установлены как DataContract, так и DataMember. Как только я публикую его и использую в другом проекте, я нигде не вижу SearchRequestObject. Я предполагаю, это потому, что это должно быть определено в интерфейсе сервиса? Если да, то каким образом?
Спасибо.
Ответ №1:
Как правило, SearchRequestObject
это один из объектов, используемых в одном из ваших методов обслуживания, например:
[ServiceContract(ConfigurationName = "IWCFService")]
public interface ICascadeManagementService
{
[OperationContract(Action = "http://tempuri.org/IWCFService/DoSearch")]
SearchResponseObject DoSearch(SearchRequestObject searchRequest);
}
Когда ваши клиентские классы будут автоматически сгенерированы, они будут включать SearchRequestObject
в файл reference.cs, который содержит определения.
Если он уже включен в метод, возможно, он не генерируется, потому что ваш клиентский проект имеет прямую ссылку на проект, в котором SearchRequestObject
определен, и когда вы создаете ссылку на службу, вы повторно используете типы из сборок, на которые даны ссылки. Вы можете проверить, есть ли у вас ссылка в списке ссылок клиентского проекта, и используете ли вы повторно типы из сборок, на которые даны ссылки, в расширенном разделе диалогового окна Добавления ссылки на службу.