2012-01-13 3 views
1

Я пытаюсь развернуть службу WCF на моем сервере, она работает так, как я хочу, чтобы она была локально. Но на сервере я получаю сообщение 404.JSON WCF Service 404 на сервере развертывания

Это то, что он выглядит, когда я называю мой тестовый метод локально:

Image of the wanted result

Когда я развернуть его я все еще могу успешно перейти к:

www.my домена name.com/ Service1.svc

, но когда я иду:

домена www.my name.com/Service1.svc/test

У меня ошибка 404. Что может быть причиной этого? Это все соответствующий код:

IService1.cs

namespace HighscoreWebService 
{ 
[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "Test", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Bare)] 
    string Test(); 
} 
} 

Service1.svc.cs

namespace HighscoreWebService 
{ 
public class Service1 : IService1 
{ 
    public string Test() 
    { 
     return "Hello world!"; 
    } 
} 
} 

Часть Web.config

<system.serviceModel> 
<services> 
    <service name="HighscoreWebService.Service1" 
      behaviorConfiguration="jsonRestDefault"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http:/xxxxxx"/> 
     </baseAddresses> 
    </host> 
    <endpoint name="jsonRestEndpoint" 
       behaviorConfiguration="RESTFriendly" 
       binding="webHttpBinding" 
       contract="HighscoreWebService.IService1"> 
    </endpoint> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="jsonRestDefault"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="RESTFriendly"> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

Я подозреваю, что сделал что-то не так в web.config. Я очень новичок в asp.net, поэтому, возможно, я совершил любое количество ошибок начинающих. Но поскольку это работает локально, это может быть что-то неправильно с конфигурацией сервера, я думаю. Или что-то в web.config мне нужно сделать, чтобы адаптироваться к конфигурации сервера.

Благодарим вас за это.

ответ

0

попробуйте добавить тег «адрес» в конечную точку web.config. Вот пример того, что у меня есть в моем проекте тестирования WCF. Хотя я бы подумал, что он должен работать, как у вас есть. Это может показаться глупым, но убедитесь, что запрос, который вы делаете на службу, на самом деле является HTTP GET. Возможно, вы также разместите свой код клиента, если какой-либо из них не работает.

<endpoint binding="webHttpBinding" bindingConfiguration="testBinding" contract="ASMXtoWCF.IWcf" 
     address="test" behaviorConfiguration="RestServiceBehavior">  
     </endpoint> 
+0

Благодарим за отзыв! Я попробовал добавить адрес = «test», но теперь, когда я перехожу к нему локально, я получаю сообщение «конечная точка не найдена» – Lage

+0

вы можете отправить свой код клиента, который вы используете, чтобы перейти к сервису? – Etch

+0

Я еще не использую клиента, пытаясь заставить его работать в браузере в первую очередь. Как это работает на местном уровне. – Lage

0

Вы должны добавить в свой merhodTest запрос behaviorto принимает GET (по умолчанию он принимает только POST). Для этого добавьте поведение WebInvoke к нему, например, добавив следующий атрибут в вашей реализации метода (это поведение)

[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)] 

Кстати вы можете удалить хоста тег из вашего веб-конфиг это не требуется

+0

Но у меня есть WebGet не WebInvoke? я должен измениться? есть ли разница? Спасибо – Lage

Смежные вопросы