単純なWCFRESTfulWebサービスを作成しようとしていますが、SOAPモードでのみ機能するようです。ローカルIISでサービスをホストしています。
それは本当に標準に見えます:
[ServiceContract]
public interface IMyService
{
[OperationContract]
Guid Login(string username, string password);
...
と:
public class MyService : IMyService
{
[WebGet(UriTemplate = "login?user={user}&password={password}", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
public Guid Login(string username, string password)
{
return Guid.Empty;
}
また、構成ファイルに動作を含め、次の場所で使用していました。
<endpoint address="" binding="webHttpBinding" contract="MyService" behaviorConfiguration="webHttp"/>
私が知っているすべての例によると...
これで、ServiceReferenceを使用するスタブクライアントからログインを呼び出す場合、Fiddlerでは問題なく表示されますが、SOAPyです。何らかの理由で、RESTyの方法でサービスを呼び出すことができません。/helpでさえ、400BadRequestを返すようです。(http:// localhost:8080 / MyService.svc /helpまたは/loginなどを呼び出しています)
RESTがアクションを実行するのを妨げているのは何ですか?前もって感謝します :)
編集:私は答えを見つけました。
ルーティングを定義する必要があることがわかりました...
これをGlobal.asaxに追加した後:
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("MyService",
new WebServiceHostFactory(), typeof(MyService)));
}
それはうまくいきました。
さらに、「。svc」がURLの一部ではなくなったことを確認しました。