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