0

我正在尝试使用 WCF Rest 创建日志服务。它看起来像这样:

[ServiceContract]
public interface ILoggingService
{
    [OperationContract, WebGet(UriTemplate = "/LogError?m={message}")]
    void Log(string message);
}

我增加了配置文件中的限制,以便您可以记录大量文本。但是,如果我超过此限制,服务将不接受该消息。到目前为止,我已经确保文本低于限制,但这是一个糟糕的解决方法。如何在 WCF REST 中解决这个问题。

更新

经过进一步调查,我最终应该得到这样的东西?

[ServiceContract]
public interface ILoggingService
{
    [OperationContract, WebGet(UriTemplate = "/LogError?m={message}", Method = "POST")]
    void Log(string message);
}

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "text/plain";
4

2 回答 2

1

对于http帖子,我认为签名看起来像

    [OperationContract]
    [WebInvoke(UriTemplate = "LogError",Method="POST")]
    void Log(string message);

使用帖子在 http 请求中而不是在 url 中发送数据。

Http get 请求只能用于读取数据,post 用于创建,put 用于更新,delete 用于删除。

http://en.wikipedia.org/wiki/Representational_State_Transfer

于 2011-04-01T13:33:22.477 回答
1

我建议不要使用 GET 方法。您正在执行的操作是写入,而不是读取。如果使用 POST,则可以使用媒体类型 text/plain 发送实体正文。这样你就不受 url 长度的限制。

于 2011-04-01T11:16:06.517 回答