VS2010に組み込まれたWebサービスが稼働しています。basicHttpBindingを使用してWCFサービスを拡張し、JSONと通信するRESTサービスを許可する良い方法はありますか?
運用契約のいくつかは、次のようになります。
[OperationContract]
ITicket Login(string userName, byte[] passwordHash, string softwareVersion);
すなわち、それらのブースは複雑な議論と複雑なリターン・タイプ、あるいは複数のリターンを持っています。
私たちは最近、アウトソーシングされたiPhoneプロジェクトを開始し、このサービスを使って私たちのサーバーと通信できるようにしています。 私は彼らから学んだことから、これはiPhoneへの通信のための良い習慣ではないことを理解しました(例えば、WSDLを使う良い方法がない)。したがって、JSONと通信するRESTサービスとしてこのサービスを公開する可能性を検討し始めました。
私はwebHttpBindingを使用して、新しいエンドポイントを追加した、このような契約を飾ら:
[OperationContract]
[WebGet(UriTemplate = "/login?username={userName}&password={password}&softwareVersion={softwareVersion}", ResponseFormat=WebMessageFormat.Json)]
ITicket Login(string userName, string password, string softwareVersion);
意図したとおり、この方法は機能するようになりました。
私は、このような別の方法を飾るしようとした:私は今、これをアクセスしようとすると、私は、次のエラーが表示さ
[OperationContract]
[WebGet(UriTemplate = "/GetMetaData?ticket={ticket}",RequestFormat=WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
IMetaData GetMetaData(ITicket ticket);
:私だけOperationContractを構築するために管理している
Server Error in '/Jetas5MobileService' Application. Operation 'GetMetaData' in contract 'IJetas5MobileService2' has a query variable named 'ticket' of type 'Jetas.MobileService.DataContracts.ITicket', but type 'Jetas.MobileService.DataContracts.ITicket' is not convertible by 'QueryStringConverter'. Variables for UriTemplate query values must have types that can be converted by 'QueryStringConverter'.
を引数として文字列をとり、DataContractJsonSerializer
を使用してバックエンドのシンセを解析しますが、これは醜いハックのように感じます。
これを解決する方法はありますか? WCFとRESTについては初心者ですので、そこにある可能性のある初心者のチュートリアルを指摘するのを恐れません。私はそれらを検索しようとしましたが、膨大な量のソースが良いものを見つけるのを難しくしています。
WCFのどのバージョンをお使いですか? –
私は.net4とVS2010を使用していますが、その質問に答えますか?それ以外は私がどのように見えるか教えてください。 –