3

次のようなコードがあります。

<OperationContract()>
<Description("")>
<WebGet(Bodystyle:=WebMessageBodyStyle.Bare, UriTemplate:="TestConnection")>
Function TestConnection() As String


Public Function TestConnection() As String Implements ITestSvc.TestConnection
    WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain"
    Return "Connection Success"
End Function

しかし、それは戻ります<string xmlns='...'>Connection Success</string>

XMLラッパーなしで「接続成功」のみを返すにはどうすればよいですか。MessageEncoder で何かできることはわかっています。しかし、操作レベルで利用できるようにしたいです (特定の操作には XML/JSON ラッパーが必要で、特定の操作には必要ありません)。

誰でもこれについて私を助けることができますか?

4

3 に答える 3

12

プレーンテキストを返す最も簡単なソリューションは次のとおりです。応答フォーマットを xml に設定し、outingresponse を text/html に設定します。トリックを行う必要があります。

[WebGet(ResponseFormat = WebMessageFormat.Xml)]
public string DoWork()
{

    WebOperationContext.Current.OutgoingResponse.ContentType = "text/html";
    return "THIS IS PLAIN TEXT";
}
于 2012-10-15T14:51:28.660 に答える
3

HTTP を扱っている場合、これを実現する方法が 1 つあります。これはあまりいい方法ではありませんが、言及できると思いました。

メソッドの戻り値の型を void に設定して、生の文字列を直接応答に出力することができます。

[OperationContract]
[WebGet(UriTemplate = "foo")]
void Foo()
{
   HttpContext.Current.Response.Write("bar");
}
于 2014-07-16T16:31:08.170 に答える
2

答えはここにありますWebGetのWCFResponseFormat(そしてそれは私のために働きました)

于 2010-10-14T14:37:17.287 に答える