Веб-сервис WCF rest работает на локальном хосте, но не на хосте - PullRequest
2 голосов
/ 29 марта 2011

Я сделал простой веб-сервис WCF на сайте ASP.net.

Веб-служба размещена на IIS и отлично работает на локальном хосте, т. Е. При доступе для примера к http://localhost/myservice.svc/HelloWorld я получаю правильный ответ "Hello World", как и ожидалось.

Но доступ к нему по имени хоста моего компьютера (http://mycomputer/myservice.svc/HelloWorld) приводит к ошибке 404.Это особенно сбивает с толку, так как оставшаяся часть сайта (в основном aspx-страницы) доступна без каких-либо проблем обоими способами.

Я подозреваю, что проблема конфигурации в IIS, но у меня нет никакой реальной подсказки.Любая помощь будет принята с благодарностью.

Моя конечная точка службы выглядит следующим образом:

<endpoint address="" binding="webHttpBinding" contract="MyService.Service" />

Трассировка стека ошибок с сервера:

[EndpointNotFoundException]: There was no channel actively listening at 'http://mycomputer.ad-ent.lan.net/myservice.svc/HelloWorld'. This is often caused by an incorrect address URI. Ensure that the address to which the message is sent matches an address on which a service is listening.
à System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result)
   à System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
   à System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()
[HttpException]: There was no channel actively listening at 'http://mycomputer.ad-ent.lan.net/myservice.svc/HelloWorld'. This is often caused by an incorrect address URI. Ensure that the address to which the message is sent matches an address on which a service is listening.
   à System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
   à System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
   à System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext)
   à System.ServiceModel.Activation.HttpHandler.ProcessRequest(HttpContext context)
   à System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   à System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Ответы [ 3 ]

0 голосов
/ 29 марта 2011
0 голосов
/ 18 июля 2012

Очень старый пост, я знаю.Но ради истории и знаний;Скорее всего, вы используете прокси, в этом случае вам нужно добавить исключение для имени вашего компьютера в настройках вашего браузера.

0 голосов
/ 29 марта 2011

Пожалуйста, проверьте NAT и настройки брандмауэра на вашем сервере, ознакомьтесь со следующей статьей

Работа с NAT и межсетевыми экранами

...