У меня есть школьное задание, и я столкнулся с проблемой, которую просто не могу понять, в чем дело.
В моем школьном задании мы создали Службу, идентичную моей службе учителей.Смысл службы состоял в том, чтобы иметь возможность общаться с нашими клиентами чата, которые мы подключили к нашему сервису.
Проблема, с которой я столкнулся, заключается в том, что когда я получил задачу, чтобы иметь возможность переключаться между двумя службами (чтотип servicename.ServiceSoapClient ("ServiceSoap12")).В своем сервисе, который я создал, я поместил в пространство имен службу моих учителей: [WebService (Namespace = "http://dsweb.tmd.hv.se/users/wsi400/ChatService/")] (Это было сделано позже, см. Ниже)
Код для моего сервиса (которыйдолжно быть почти идентично (те же значения возврата и ввода)) здесь: http://pastie.org/2461928
Теперь к реальной проблеме ..
При создании клиента для одного сервисаэто кусок пирога, попытка сделать так, чтобы можно было переключаться между ними, используя только одну ссылку в клиенте, кажется невозможной (но другим удалось это сделать, но после изучения кода и тому подобного мы не понимаем, что не так с моей)Я, как я уже сказал, добавил локальную ссылку на мой сервис (мой файл asmx), и это потому, что мне, очевидно, нужно было пространство имен, указывающее на мой сервис учителей из моего.
При подключении к своему сервису я используюследующий код:
wsChatService.ServiceSoapClient wsService = new wsChatService.ServiceSoapClient("ServiceSoap12");
При добавлении моей службы в app.config создается много материала, и я изменил значение, чтобы иметь возможность переключаться на службу учителей:
<client>
<endpoint address="http://dsweb.tmd.hv.se/users/wsi400/ChatService/Service.asmx" binding="basicHttpBinding"
bindingConfiguration="ServiceSoap" contract="wsChatService.ServiceSoap"
name="ServiceSoap" />
<endpoint address="http://dsweb.tmd.hv.se/users/wsi400/ChatService/Service.asmx" binding="customBinding"
bindingConfiguration="ServiceSoap12" contract="wsChatService.ServiceSoap"
name="ServiceSoap12" />
</client>
Теперь я попытался переключиться с помощью простой кнопки, и функция тестирования всегда работает при переключении между службами, но в зависимости от того, какую службу я выберу использовать в качестве ссылки на сборку, я могу публиковать сообщения.к.
Это код для клиента:
private void service1_Click(object sender, EventArgs e)
{
if (connNr == 2)
{
wsService = new wsChatService.ServiceSoapClient("ServiceSoap12", "http://localhost:63280/Service.asmx");
connNr = 1;
MessageBox.Show("Connection changed to: Markus \nTesting connection: " + wsService.Test());
textarray.Text = "";
MessageBox.Show("Trying to send message: " + wsService.SendMessage("babbel", "Connecting..", "Connected?"));
}
}
private void service2_Click(object sender, EventArgs e)
{
if (connNr == 1)
{
wsService = new wsChatService.ServiceSoapClient("ServiceSoap12", "http://dsweb.tmd.hv.se/users/wsi400/ChatService/Service.asmx");
connNr = 2;
MessageBox.Show("Connection changed to: http://dsweb.tmd.hv.se/users/wsi400/ChatService/Service.asmx \nTesting connection: " + wsService.Test());
textarray.Text = "";
MessageBox.Show("Trying to send message: " + wsService.SendMessage("babbel", "Connecting..", "Connected?"));
}
}