これは、「HelloWorld」文字列を返すことになっている簡単な例です。ただし、ブラウザには。のようなものが表示されますSGVsbG8gV29ybGQ=
。oldskulスタイルのサービスからプレーンテキストを返す正しい方法はどれですか?
それを知ってください:
文字列を返すことができません。3つのUnicode文字が自動的に先頭に追加され、従来のHTTPクライアントは相互運用できなくなります。
を返すこともでき
Message
ますが、それでもdata
変数を抽出するために機能を解析し続ける必要があります。同じメソッドシグニチャでのミキシングMessage
とint
タイプは、AFAIKでは許可されていません。[ServiceContract(SessionMode=SessionMode.NotAllowed)] public interface IHello { [WebGet(UriTemplate = "manager?data={data}")] [OperationContract] Byte[] DoIt(int data); }
public class Hello : IHello { public Byte[] DoIt(int data) { return Encoding.ASCII.GetBytes("HelloWorld"); } }
更新:それはぎこちないものではありませんが、正しくエンコードされた応答です。しかし、そのフォーマットは私が期待するものではありません。私は(以下の紳士が示唆するように)トランスポート層のメッセージング形式の究極の制御がMessage
クラスで得られることを理解しました。UriTemplate
ただし、これを使用すると、リクエスト(属性)を解析する可能性がなくなります。Message
したがって、とを統合する方法を知っておくと便利UriRequest
です。
PS「クリーンな」統合が不可能な場合-最もエレガントな回避策は何ですか?ワイヤーカーテンの後ろで実行され、実装で借用して使用できるコードはありますか?