Я рассмотрел множество вопросов на этом сайте, которые обсуждают, но прямо не отвечают на этот вопрос. У меня есть следующие:Конфигурирование WCF, где ServiceContract и реализация сервиса находятся в отдельных сборках
В Library.dll
:
namespace LibraryNamespace
{
[ServiceContract]
public interface IService
{
[OperationContract]
void Operation();
}
}
В Implementation.dll
:
namespace ImplementationNamespace
{
public class ServiceImplementation : IService
{
public void Operation()
{
// Do Something
}
}
}
В app.config
:
<service name="ImplementationNamespace.ServiceImplementation">
<endpoint
address="ServiceImplementation"
binding="netTcpBinding"
contract="LibraryNamespace.IService" />
....
</service>
И я продолжаю имея предупреждение с contract="LibraryNamespace.IService"
. Программа работает, но у меня такое чувство, что это предупреждение вызывает у меня больше проблем.
Атрибут «контракт» недействительно - Значение «LibraryNamespace.IService» недействительно в соответствии с его типом данными «serviceContractType» - перечисление ограничение не удалось.
Это работает, когда ServiceContract
и реализация службы находятся в одной и той же сборке и пространстве имен, но по какой-то причине она здесь не работает. Как я могу правильно ссылаться?
Почему вы хотите иметь их в отдельной DLL? любая конкретная причина? – Rahul
Да, в основном, я хочу создать общий ServiceContract, а затем написать много других классов ServiceImplementation в разных сборках, которые следуют одному и тому же контракту на обслуживание. Таким образом, я могу стандартизировать свои ServiceImplementations и называть их стандартным способом от клиента. – user3685285