В настоящее время я пишу службу RESTful WCF на C # с использованием VS 2005. Я размещаю службу через IIS и могу перейти к .svc, но всякий раз, когда я пытаюсь перейти к любому из URI, я получаю ошибку 404. Если я запускаю wcftestclient (входит в состав VS 2008), я могу увидеть методы, поэтому я знаю, что служба работает. Проблема, похоже, связана с REST-частью реализации.
Это мой web.config:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="ServiceBehavior" name="MyAPI">
<endpoint binding="webHttpBinding" contract="IExternalAPI"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Это контракт:
[ServiceContract()]
interface IExternalAPI {
[OperationContract]
[WebGet (BodyStyle=WebMessageBodyStyle.Bare,ResponseFormat=WebMessageFormat.Json,UriTemplate="{APIKey}/Favorites/{userId}")]
string GetFavoritesList(string APIKey, string userId);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "{APIKey}/Addresses/{userId}")]
string GetAddressList(string APIKey, string userId);
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "{APIKey}/Authenticate/{userName}/{password}")]
string Authenticate(string APIKey, string username, string password);
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "{APIKey}/Checkout/{orderId}/{userId}/{tip}/{addressId}")]
string Checkout(string APIKey, string orderId, string userId, string tip, string addressId);
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "{APIKey}/AddToOrder/{templateId}/{userId}")]
string AddFavoriteToOrder(string APIKey, string templateId, string userId);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "{APIKey}/Pending/{userId}")]
string GetPendingOrders(string APIKey, string userId);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Bob")]
string TestMethod();
}
Любая помощь будет принята с благодарностью.