Nano Hash - криптовалюты, майнинг, программирование

Использование ссылки на службу WCF: конечная точка не найдена/страница 404 не найдена

Здравствуйте, я знаю, что эта тема может показаться знакомой, но я могу сказать вам, что после целого дня поиска связанных вопросов я пришел за помощью, потому что ни одно из предложенных решений не сработало для меня.< /эм>

Я создал приложение-службу REST WCF только с одной службой, которая работает локально на моем компьютере, а также с клиентом ASP.NET WebForm, который его использует (оба на отдельном экземпляре VS 2013 на Windows 7).

Все операции сервиса работают идеально.

  • Операции GET можно успешно протестировать в браузере.
  • Операции POST можно успешно протестировать с помощью расширения браузера Postman.

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

AuthorRESTServiceClient service = new AuthorRESTServiceClient("AuthorServiceBinding");
string value = service.Test(); //GET operation that should return a "Hello World"

затем клиент выдает EndpointNotFoundException:

Не было прослушивающей конечной точки на http://localhost:49414/AuthorRESTService.svc, которая могла бы принять сообщение. Это часто вызвано неверным адресом или действием SOAP. Дополнительные сведения см. в разделе InnerException, если он присутствует.

И содержит внутренний WebException:

Удаленный сервер вернул ошибку: (404) Not Found

Вот частичный код Web.config сервера WCF Service Application:

  <system.serviceModel>
    <services>
      <service name="WCFAuthorEntryService.AuthorRESTService">
        <endpoint address=""
                  binding="webHttpBinding"
                  contract="WCFAuthorEntryService.IAuthorRESTService"
                  behaviorConfiguration="web">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

А вот частичный код Web.config клиента ASP.NET Webform.

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="AuthorServiceBinding"/>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:49414/AuthorRESTService.svc"
                binding="basicHttpBinding"
                bindingConfiguration="AuthorServiceBinding"
                contract="AuthorServiceReference.IAuthorRESTService"
                name="AuthorServiceBinding"/>
    </client>
  </system.serviceModel>

Что я делаю не так? Любая помощь приветствуется.


Ответы:


1

Есть три вещи, которые мне кажутся возможными проблемами:

  1. В Web.Config для приложения WCF у вас есть <add binding="basicHttpsBinding" scheme="https" />, но URL-адрес в клиенте использует «http».
  2. Сервер всегда работает на порту 49414?
  3. Верны ли настройки аутентификации вашего сайта? Ознакомьтесь с EndpointNotFoundException: конечная точка не прослушивалась.
08.04.2015
  • 1. Убрал привязку https, ошибка все та же. 2. Сервер ВСЕГДА работает на порту 49414. 3. Я использую IIS Express, интегрированный в VS 2013. В приложении не требуется аутентификация. 08.04.2015

  • 2

    Вы не указали адрес конечной точки службы, оставили его пустым. Установите для атрибута address в элементе endpoint в файле конфигурации служб то же значение, которое вы установили в конфигурации клиентов. Кроме того, в зависимости от того, как вы размещаете службу WCF, вам может потребоваться установить базовый адрес службы.

    08.04.2015
  • Я попытался установить атрибут address в элементе endpoint в файле конфигурации служб на то же значение, что и в файле конфигурации клиента (поэтому мне пришлось установить для multipleSiteBindingsEnabled значение false, чтобы разрешить абсолютный URL-адрес), но результат был таким же. Я попытался добавить базовый адрес хоста к тому же значению, что и у клиента, но ничего не изменилось, я все еще получаю оба исключения 08.04.2015
  • Вы обязательно должны указать адрес конечной точки службы. И еще одна вещь, которую я вижу, это то, что вы привязали конечную точку службы к webHttpBinding (RESTful), а клиент к basicHttpBinding (SOAP). Исправьте это и давайте посмотрим, куда это нас приведет. 08.04.2015
  • Я изменил клиент на тот же webHttpBinding, но получил другое исключение: На этой фабрике включена ручная адресация, поэтому все отправляемые сообщения должны быть предварительно адресованы Знаете ли вы, откуда они поступают и как почини это ? 08.04.2015

  • 3

    Попробуйте добавить веб-ссылку вашей службы REST в клиентский проект, он автоматически внесет некоторые изменения в ваш клиентский web.config и просто удалит раздел сопоставления протоколов из вашего файла WCF web.config. Это может помочь вам.

    14.04.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..


    © 2024 nano-hash.ru, Nano Hash - криптовалюты, майнинг, программирование