Я сделал простой веб-сервис 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)