Когда вы «создаете экземпляр» IAuthService - возможно, посредством создания клиентского прокси для этого контракта на обслуживание - вы видите представление контракта на обслуживание класса, например, вы видите все, что выставлено на [ServiceContract]
как [OperationContract]
- методы обслуживания. Это то, что раскрывается в описании вашего сервиса (WSDL вашего сервиса), и совершенно неважно, какую видимость эти методы имеют в мире .NET.
Однако, если вы создаете экземпляр класса службы напрямую как класс .NET (а не через среду выполнения службы WCF), то, очевидно, вы ограничены ограничениями видимости .NET, и члены класса internal
по умолчанию, например снаружи не видно.
Таким образом, в основном вам нужно различать, рассматриваете ли вы свой класс как представление контракта на обслуживание WCF или как классический класс .NET.
Марк
ОБНОВЛЕНИЕ: если вы хотите использовать вашу DLL "в качестве службы WCF", вам необходимо использовать прокси-клиент WCF, чтобы использовать ее. Это можно сделать несколькими способами:
- создать клиентский прокси, используя
svcutil.exe
из командной строки
- в Visual Studio, используйте «Add Service Reference» и позвольте VS создать ваш клиентский прокси для вас
- или создайте клиентский прокси в коде - на самом деле это не так сложно!
В коде вы можете сделать что-то вроде
ChannelFactory<IAuthService> factory = new ChannelFactory<IAuthService>();
IAuthService proxy = factory.CreateChannel();
Теперь в вашем proxy
классе вы должны увидеть и уметь использовать ваш Login
метод.
Конечно, чтобы все работало, вам понадобится правильный набор записей конфигурации и все в вашем web.config.
Это помогает?