Служба JSON WCF 404 на сервере развертывания - PullRequest
1 голос
/ 13 января 2012

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

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

Изображение желаемого результата

Когда я разверну его, я все равно смогу найти:

www.my domain name.com/Service1.svc

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

www.my domain 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, которое мне нужно сделать, чтобы адаптироваться к конфигурации сервера.

Спасибо, что прочитали это.

Ответы [ 2 ]

0 голосов
/ 15 января 2012

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

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

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

0 голосов
/ 13 января 2012

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

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