単純なWCF RESTful Webサービスを作成しようとしていましたが、SOAPモードでしか動作しないようです。私は、ローカルのIISで私のサービスをホストしています。WCF REST ServiceがHTTP 400 Bad Requestを返す
それは本当に標準になります。
[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でも400の悪い要求を返すようです。 (私はhttp://localhost:8080/MyService.svc/helpまたは/ loginなどを呼び出しています)
RESTが何を行うのを妨げているのでしょうか? 事前に感謝:)
編集:私は答えを見つけました。
これは、1つは、Global.asaxのにこれを追加した後ルーティング ...
を定義する必要があり判明:
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("MyService",
new WebServiceHostFactory(), typeof(MyService)));
}
それがうまく通り抜けました。
さらに、「.svc」がURLの一部ではないことがわかりました。
一般的な注意点として、GETによるログインは、概念的には状態の変化であるため、悪い習慣とみなされます。 POSTを使用します(設定はHTTPS経由)。 –
RESTサービスを呼び出すには、クライアント側でAdd Service Referenceを実行しないでください。 RESTfulな方法でHttpWebRequestクラスを呼び出す必要があります。 – Rajesh