TL; DR-持っていますが[WebGet(UriTemplate = "/")]
、機能しません
次のようなWCFサービスがあります。
public interface IUserService
{
// This doesn't work
[OperationContract]
[WebGet(UriTemplate = "/")]
IList<User> GetAllUsers();
/////////////////////////////////////
// Everything below this works
/////////////////////////////////////
[OperationContract]
[WebGet(UriTemplate = "/{id}/")]
User GetUserById(string id);
[OperationContract]
[WebInvoke(UriTemplate = "/", Method = "POST")]
IList<User> AddUser();
[OperationContract]
[WebInvoke(UriTemplate = "/{id}/", Method = "PUT")]
IList<User> UpdateUser(string id, User user);
}
エンドポイントの構成は次のとおりです
<service name="MyCompany.UserService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:80/api/users/" />
</baseAddresses>
</host>
<endpoint address=""
behaviorConfiguration="WebHttpBehavior"
binding="webHttpBinding"
contract="MyCompany.IUserService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<endpoint address="soap"
binding="wsHttpBinding"
contract="MyCompany.IUserService" />
</service>
ご覧のとおり、私はこのサービスからRESTとSOAPの両方を提供しています。この質問はRESTのみを扱います。
http://localhost:80/api/users/
ブラウザで( WCFの用語で)移動GET "/"
すると、エンドポイントについて説明しているWCFヘルプページが表示されます。これは、SOAPには役立ちますが、RESTにはあまり役立ちません。ただし、他に何かを行うと、期待どおりに機能します。このPOST
URLにアクセスすると、またはGET /123456
、通常のJSON応答が返されます(実際にサービスが実行されます)。
WCFが「/」操作を乗っ取っているようです。このWCFの「ヘルプ」動作をオフにして、操作を実行できるようにする方法はありますか?どんな提案でも大歓迎です。