У меня есть серверный код, который был отложен на некоторое время, и я вернулся, чтобы проверить его.
Мы создаем ServiceHost
в классе и добавляем конечные точки к ServiceHost
.Когда мы добавляем конечную точку, мы получаем исключение:
[атрибут ServiceContract не может быть найден.]
Но атрибут есть, и я добавил код вполучить атрибуты и проверить, что это там.
public static void AddEndPoint ( ServiceHost host, string url, Type implementsType )
{
var binding = CreateBinding( url );
var attrs = implementsType.GetCustomAttributes ( false );
host.AddServiceEndpoint ( implementsType, binding, url );
}
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
string SayHello ( string name );
}
Я создал пример sln , который отлично работает, когда все библиотеки являются библиотеками .net framework.
В обычном sln наши сервисные интерфейсы находятся в .net стандартной библиотеке 2.0 , наши сервисы находятся в .net Framework иПроект, создающий хост службы, - это .net Framework Library .Я не могу понять, почему, если атрибут присутствует при просмотре в массиве attrs, и все же AddServiceEndPoint не находит его.