2014-02-16 89 views
0

我有一个合同:WCF字符串输入长度

 [OperationContract] 
     [WebGet(ResponseFormat = WebMessageFormat.Json)] 
     bool SendEmail(string mailMessage); 

我打电话这样的:(很长 - 直出铬调试器)

http://localhost:8093/AnnualReviewService/json/SendEmail?callback=json_Callback0&mailMessage={%22From%22:{%22address%22:%[email protected]%22},%22To%22:[],%22Bcc%22:[{%22address%22:%[email protected]%22},{%22address%22:%[email protected]%22},{%22address%22:%[email protected]%22},{%22address%22:%[email protected]%22},{%22address%22:%[email protected]%22},{%22address%22:%[email protected]%22},{%22address%22:%[email protected]%22}],%22CC%22:[],%22Priority%22:2,%22Subject%22:%22Important!%20Peer%20Feedback%20Needed%22,%22Body%22:%22\n\t\t\t%3Cp%3E%3Cb%3EAll,%20%3C/b%3E%3C/p%3E\n\t\t\t\t%3Cp%3E%3Cb%3E %3C/b%3E%3C/p%3E\n\t\t\t\t%3Cp%3E%3Cb%20class=\%22ng-binding\%22%3EI%20am%20reaching%20out%20to%20you%20to%20request%20very%20targeted\n\t\t\t\tfeedback%20for%20Fake%20User.%20You%20have%20been%20chosen%20due%20to%20your%20experience\n\t\t\t\tworking%20with%20this%20person.%20This%20feedback%20is%20kept%20anonymous,%20and%20its%20intent%20is%20to%20not\n\t\t\t\tonly%20point%20out%20the%20areas%20where%20this%20person%20excels,%20but%20to%20also%20offer%20some\n\t\t\t\tconstructive%20feedback.%3C/b%3E%3C/p%3E\n\t\t\t\t%3Cp%3E%3Cb%3E %3C/b%3E%3C/p%3E\n\t\t\t\t%3Cp%3E%3Cb%3EIt%20is%20very%20important%20that%20each%20of%20you%20take%20the%20time%20in\n\t\t\t\tthe%20next%20couple%20of%20days%20to%20provide%20me%20this%20feedback.%3C/b%3E%3C/p%3E\n\t\t\t\t%3Cp%3E%3Cb%3E %3C/b%3E%3C/p%3E\n\t\t\t\t%3Cp%3E%3Cb%3EThank%20you!%3C/b%3E%3C/p%3E\n\t\t\t\t%3Cp%3E %3C/p%3E\n\t\t%20%20%22,%22IsBodyHtml%22:true} 

当我调试我看到过in是这样的:

"{\"From\":{\"address\":\"[email protected]\"},\"To\":[],\"Bcc\":[{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"},{\"address\":\"[email protected]\"}],\"CC\":[],\"Priority\":2,\"Subject\":\"Important! Peer Feedback Needed\",\"Body\":\"\\n\\t\\t\\t<p><b>All, </b></p>\\n\\t\\t\\t\\t<p><b>" 

有什么限制我可以通过吗?我没有找到任何有意义的东西。

这是.NET 4.5

编辑 如果是有极限的,你可以请提供一个链接,它被记录在案

谢谢

+0

您的URL长度为1629年,而IEEE规定的URL最长为2048年,它足以在WCF中超过一定的限制。 –

+0

@ScottChamberlain谢谢你的回复 - 可以说'有些限制'是你记录在任何你知道的吗? – Wjdavis5

+0

我能找到的唯一记录的限制是[URL的2048年的一般限制](http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different -browsers)。 –

回答

0

既然你在标题“WCF指定字符串输入长度“,我想向你指出这篇StackOverflow文章:

Add restrictions to WCF in method/data member

(会添加此作为评论,但因为我刚加入,所以我还没有被允许。)

希望这有助于!

0

这不是直接回答你的问题,但你真的应该考虑使用类似application/x-www-form-urlencoded这样的内容类型在请求主体中创建一个POST。正如其他人在评论中指出的那样,对于URL的适用程度,最终还是有限制的。另外,它现在看起来就是设计作为HTTP操作的GET操作。从技术上讲,GETs应该是幂等的,这似乎是将会改变服务器上某种状态的东西。

+0

这可能应该是一篇文章,让内容进入正文。但是并没有发生任何状态变化。感谢您的评论! – Wjdavis5

+0

那么给一个镜头,因为它可以减轻你在这里遇到的任何奇怪的查询字符串限制。我个人不知道控制查询字符串的解析的任何选项,而像MaxStringContentLength这样的普通WCF配置选项的默认值为8k,所以,除非您在webHttpBinding中更改了这个选项,否则我认为这不适用于此。 –