Возможно ли получить доступ к службе 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-адрес. Джон код должен работать нормально, пока служба выполнила требуемые контракты.