WCF REST将超过最大URL长度导致错误

时间:2011-04-01 09:16:18

标签: c# .net wcf rest wcf-rest

我正在尝试使用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";

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

使用帖子会在http请求中发送数据,而不是在网址中发送数据。

Http get请求只应用于读取数据,发布用于更新和删除以进行删除。

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