2013-12-18 4 views
1

Я делал поиск снова и снова, но я действительно не знаю, чего мне не хватает. У меня есть метод WCF, и после вызова, возврат службы с ошибкой 404, ресурс не найден.Ошибка 404 При вызове Restful Wcf Service

URL-адрес, как это: локальный: 3522/AccountService.svc/AccountBalance/1

я запускаю его из Визуальных с IIS 8 Express.

метод WCF, как этот

[ServiceContract] 
public interface IAccountService 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "accountbalance/{accountId}")] 
    decimal GetAccountBalance(string accountId); 
} 

И это мой web.config

<bindings> 
    </basicHttpBinding> 
    <webHttpBinding> 
    <binding name="WebHttpBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" proxyCredentialType="Windows" /> 
     </security> 
    </binding> 
    </webHttpBinding> 
</bindings> 

<services> 
    <service behaviorConfiguration="ProfileServiceDefaultBehavior" 
    name="MyWcfService.AccountService"> 
    <endpoint behaviorConfiguration="RestFulBehavior" binding="webHttpBinding" 
     bindingConfiguration="WebHttpBinding" name="AccountServiceEndpoint" 
     bindingName="AccountServiceBinding" contract="MyWcfService.IAccountService" /> 
    <endpoint address="mex" behaviorConfiguration="" binding="mexHttpBinding" 
     contract="IMetadataExchange" /> 
    </service> 
</services> 

<behaviors> 
    <endpointBehaviors> 
    <behavior name="RestFulBehavior"> 
     <webHttp automaticFormatSelectionEnabled="true" /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="ProfileServiceDefaultBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 

ответ

1

Я решил вопрос 2 способами:

  1. Для Transport режима безопасности, SSL должны быть включены и служба должна быть вызвана в SSL channed.
  2. Для режима защиты , обслуживание Restful отлично работает с http.

@adkSerenity: спасибо за предложение SSL и отслеживание.

С наилучшими пожеланиями, Vu

2

На основе краткого обзора, секция обслуживания файла конфигурации, кажется, отсутствует элемент baseAddresses ,

<host> 
     <baseAddresses> 
     <add baseAddress="https://localhost:3522/AccountService.svc" /> 
     </baseAddresses> 
    </host> 

Кроме того, вы можете рассмотреть возможность включения WCF трассировки и ведения журнала, так что вы можете просматривать события запуска службы WCF для каких-либо ошибок. Следующая ссылка обеспечивает хороший обзор:

http://msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx

Конечная нота: так как ваша служба связывания имеет [безопасности режима = «Транспорт»], убедитесь, что на стороне сервера сертификат настроен правильно для поддержки SSL.

С уважением,

+0

Я попробовал это тоже, но не повезло. Еще один информер, когда я вызываю http: // localhost: 3522/AccountService.svc/accountbalance/1. Я получил ошибку сервера в приложении «/». Ресурс не найден. Описание: HTTP 404. Ресурс, который вы ищете (или его зависимости), мог быть удален, изменилось его имя или временно недоступно , Просмотрите следующий URL-адрес и убедитесь, что оно написано правильно. 'Но когда я вызываю http: // localhost: 3522/AccountService/accountbalance/1, я получил еще 404 страницы, но экран IIS 8 –

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