发布请求 - 长JSON字符串 - 请求大小太大 /找不到端点



这是我第一次在此处发布,所以如果我违反任何规则,请原谅。我已经广泛搜索了Stackoverflow,但我无法找到问题的答案。

基本上,我试图从Windows桌面应用程序中发送一个长的JSON字符串,作为邮政请求的主体,向WCF服务发送。通过"长",我的意思是,当我对字符串进行估算并将其导出为XML文件时,占用约200 kb。但是,我也没有任何短的JSON字符串。

我尝试使用RestSharp,但我一直找到一个"找不到端点"。错误。当我尝试在Stackoverflow或MSDN的默认方法上找到的方法时,我会发现一个错误说:"错误413:请求实体太大。"或者,如果我发送了一个简短的JSON字符串,我会收到"错误400:不良请求。"

这是我使用的方法。

restsharp:RESTSHARP简单完整的示例

(在这里,我以141票使用了第一个答案).NET:发送数据并阅读响应的最简单方法

https://msdn.microsoft.com/en-us/library/debx8sh9(v = vs.100)99.aspx?cs-save-save-lang = 1&cs-lang = cs-lang = vb#code-snippet-snippet-27

我使用vb.net,但我也很乐意在C#中得到答案。但是,PHP或AJAX中的答案对我来说不会很好。我已经有一个同事在Ajax中实现了这一点,并且它可以正常运行,但是我们正在vb.net中构建Windows桌面应用程序,而Ajax并未完全将单词词转换为vb.net。

我感谢任何帮助。提前致谢。

P.S。这是他发送给我的HTML文件中的Ajax代码 - 它可以正常运行。出于安全目的,我取出了URL,并用一个简单的JSON字符串替换了Long JSON字符串。

<!DOCTYPE HTML>
<html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
<script type="text/javascript">
function btn_click(){
//alert('btn');
var updatedData='[{"firstname": "Billy", "lastname": "Bob", "occupation": "cowboy"}]';
$.ajax({
        type: "POST",
        url:"<suppressed>",
        data: JSON.stringify(updatedData),
        contentType: "application/json; charset=utf-8?",
        dataType: "json",
        processData: true,
        success: function (data, status, jqXHR) {
                  alert("success…" + data);
        },
        error: function (xhr) {
               $('#msgText').text(xhr.responseText);
                     //alert(xhr.responseText);
        }
});
}
</script>
</head>
<body>
<input type="button" text="Click" Value="Click" onclick="btn_click()">
<label id="msgText"></label>
</body>

听起来像413误差启动,并且隐藏到未找到的端点/400错误。IIRC默认最大请求实体为65K,这就是为什么您会收到413错误的原因。这个最大大小可以尝试阻止任何拒绝服务攻击。如果要更改此操作,最简单的方法是使用WCF服务配置编辑器(VS2010:工具> WCF服务配置编辑器)打开WCF服务配置文件。您可能需要使用大型MaxReceivedMessagesize创建新的绑定配置。(同样,不要使它太大或有风险攻击)。您可能会发现您还需要更改MaxStringContentLength。然后设置端点以使用此新的绑定配置。这应该处理413错误。

找不到端点更复杂。这意味着您的客户端正在尝试调用服务器上未找到的端点。由于您尚未包含客户端试图致电的端点的详细信息,也没有服务器提供的服务/端点,我无能为力。但是,在"服务配置编辑器"中,您可以转到诊断并打开跟踪。这将在服务器上创建一个跟踪文件,这可能有助于您发现问题。

最新更新