У меня есть приложение на основе этого урока
Метод, который я использую для получения списка пользователей из сервиса:
public class PBMBService : IService
{
public ServiceResponse UserList()
{
try
{
sql.Open();
List<User> result = new List<User>();
//filling list from database
return new ServiceResponse(SRFlag.OK, result);
}
catch (Exception ex)
{
return new ServiceResponse(SRFlag.EXCEPTION, ex);
}
}
//other methods
}
Сервисная основная функция:
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:8000/PBMB");
ServiceHost selfHost = new ServiceHost(typeof(PBMBService), baseAddress);
try
{
selfHost.AddServiceEndpoint(
typeof(IService),
new WSHttpBinding(),
"PBMBService");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
selfHost.Open();
Console.WriteLine("Serwis gotowy.");
Console.WriteLine("Naciśnij <ENTER> aby zamknąć serwis.");
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("Nastąpił wyjątek: {0}", ce.Message);
selfHost.Abort();
}
}
}
Другие классы в
Classes.cs
namespace PBMB
{
public enum SRFlag { OK, EXCEPTION };
[DataContract]
public class ServiceResponse
{
private SRFlag _flag;
private Object _content;
public ServiceResponse(SRFlag srf, Object c)
{
_flag = srf;
_content = c;
}
[DataMember]
public SRFlag Flag
{
set { _flag = value; }
get { return _flag; }
}
[DataMember]
public Object Content
{
set { _content = value; }
get { return _content; }
}
}
[DataContract]
public class User
{
[DataMember]
public string Login { get; set; }
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string MiddleName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string Email { get; set; }
}
}
Мой вопрос: почему я не могу отправить что-либо, не являющееся универсальным типом?
Мне нужно отправить List<User>
или User[]
, но я даже не могу отправить int[2]
(возможна отправка int
или string
).
Когда я пытаюсь отправить Список от службы к клиенту, служба работает, но в клиенте появляется исключение:
An error occurred while receiving the HTTP response to http://localhost:8000/PBMB/PBMBService.
This could be due to the service endpoint binding not using the HTTP protocol.
This could also be due to an HTTP request context being aborted by the server
(possibly due to the service shutting down). See server logs for more details.