Подтвердить что ты не робот

Вызов asmx с серверной стороны С#: элемент конечной точки, соответствующий этому контракту, можно найти в клиентском элементе

Я написал asmx webSerivce на srv1. Я написал проект bll проекта asp.net (исходный текст: asp.net) на srv2. Оба размещены в одном и том же веб-домене

Я хочу вызвать asmx из проекта bll файла asp.net (исходный текст: asp.net(С#)).

1) Я добавил веб-ссылку, но не смог найти какой-либо учебник, как действительно вызвать ссылочную службу.

Я пробовал:

private void GetTemplateComponentsData()
{
    var service = new ServiceReference.GetTemplateParamSoapClient();
    TemplateParamsKeyValue[] responsArray = service.GetTemplatesParamsPerId(id);

    foreach (var pair in responsArray)
    {
        TemplateComponentsData.Add(pair.Key, pair.Value);
    }
}

но при выполнении первой строки получим следующую ошибку: Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт "ServiceReference.GetTemplateParamSoap" в разделе конфигурации клиента ServiceModel. Возможно, это связано с тем, что для вашего приложения не найден ни один файл конфигурации, или потому, что элемент-конечный элемент, соответствующий этому контракту, не найден в клиентском элементе.

Что мне не хватает?

2) Я планирую перенести asp.net proj и asmx вместе из одного домена в другой. Есть ли способ ссылаться на этот веб-сервис относительно?

4b9b3361

Ответ 1

ОК, позвольте мне попытаться перефразировать ваш сценарий, чтобы убедиться, что я правильно понял:

  • У вас есть веб-служба ASMX, размещенная в каком-либо домене.
  • У вас есть приложение ASP.NET, размещенное в том же или другом домене (это не имеет большого значения), из которого вы хотите использовать этот веб-сервис ASMX с помощью WCF-клиента (svcutil).

Первым шагом является добавление Service Reference в приложение ASP.NET, указывая на WSDL службы ASMX:

enter image description here

Это сделает 2 вещи:

  • Он добавит ServiceReference к вашему веб-приложению

enter image description here

  • Он изменит ваш web.config и включит конечные точки клиента:

    <client>
      <endpoint address="http://ws.cdyne.com/NotifyWS/phonenotify.asmx"
        binding="basicHttpBinding" bindingConfiguration="PhoneNotifySoap"
        contract="ServiceReference1.PhoneNotifySoap" name="PhoneNotifySoap" />
      <endpoint address="http://ws.cdyne.com/NotifyWS/phonenotify.asmx"
        binding="customBinding" bindingConfiguration="PhoneNotifySoap12"
        contract="ServiceReference1.PhoneNotifySoap" name="PhoneNotifySoap12" />
    </client>
    

Теперь, когда вы хотите вызвать эту услугу из своего приложения, вам нужно будет выбрать конечную точку, которую вы хотите использовать:

using (var client = new ServiceReference1.PhoneNotifySoapClient("PhoneNotifySoap"))
{
    var result = client.GetVersion();
}

Теперь просто замените мои фрагменты кода вашими фактическими именами служб.