Возможно ли получить доступ к службе WCF без добавления справки по сервису?
Мне нужно получить доступ к методам службы Wcf без добавления Service Reference? Как это сделать?
Шаг 1: Я создаю службу WCF.
Шаг 2: добавьте ссылку на службу в мое приложение.
Шаг 3. И получить доступ к методам службы WCF в приложении.
таким образом,
ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();
protected void Button1_Click(object sender, EventArgs e)
{
UserDetails userInfo = new UserDetails();
userInfo.UserName = TextBoxUserName.Text;
userInfo.Password = TextBoxPassword.Text;
userInfo.Country = TextBoxCountry.Text;
userInfo.Email = TextBoxEmail.Text;
string result = obj.InsertUserDetails(userInfo);
LabelMessage.Text = result;
}
Ответы
Ответ 1
Вы можете использовать следующее. Просто не забудьте добавить ссылку на контракт службы.
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:4684/Service1.svc");
ChannelFactory factory = new ChannelFactory<ServiceContract>(binding, address);
ServiceContract channel = factory.CreateChannel();
string resturnmessage = channel.YourMethod("test");
Из здесь вы можете получить полную тренировку относительно этого.
Ответ 2
Да, можно вызвать в качестве службы WCF без добавления служебной ссылки.
В качестве первого шага я предполагаю, что у вас есть контактный интерфейс службы как отдельная библиотека классов.
Шаг 2. Создайте свой сервис WCF и разместите его в IIS
Шаг 3: обратитесь в свою библиотеку контрактных услуг в клиентское приложение, а затем следуйте этому коду
ChannelFactory<IYourServiceContract> factory = new ChannelFactory<IYourServiceContract>("EndpointNameOfYourService");
factory.Endpoint.Address = new EndpointAddress("http://example.com/service");
IYourServiceContract client = factory.CreateChannel();
var result = client.YourMethodtoInvoke(serviceArguments);
Надеюсь, что это поможет
Ответ 3
Рискуя привязку линчевой монеты с этим, но...
Если причина вы не добавляете ссылку, потому что вам нужно выбрать URL-адрес во время выполнения, вы можете добавить ссылку и затем изменить ее, когда вам нужно:
MyProxy.Endpoint.Address = new EndpointAddress(MyUri);
(или делать то же самое в конструкторе при создании экземпляра).
Ответ 4
У меня нет репутации для комментирования ответа "Thilina H", но вы можете использовать код
ServiceContract channel = factory.CreateChannel();
только если вы написали:
var factory = new ChannelFactory<ServiceContract>(binding, address);
вместо
ChannelFactoryfactory = new ChannelFactory<ServiceContract>(binding, address);
Ответ 5
Когда Джон сделал это:
"Шаг 2: добавьте ссылку на службу в мое приложение".
Visual Studio добавила привязки конечной точки и по умолчанию к файлу app.config своего приложения. Ему не нужно указывать URL-адрес. Джон код должен работать нормально, пока служба выполнила требуемые контракты.