Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebApi获取故障排除请求_C#_Asp.net Web Api - Fatal编程技术网

C# WebApi获取故障排除请求

C# WebApi获取故障排除请求,c#,asp.net-web-api,C#,Asp.net Web Api,在调用本地运行的webapi时,我将requestUri中的数据作为序列化对象的base64编码Json传递,但每次都会获得StatusCode 400 我如何解决我的请求 public class VerifyController : ApiController { // GET: api/Verify/jsonStringAddressOriginal public AddressResult Get(string base64AddressOriginal) 呼叫者: v

在调用本地运行的webapi时,我将requestUri中的数据作为序列化对象的base64编码Json传递,但每次都会获得StatusCode 400

我如何解决我的请求

public class VerifyController : ApiController
{
    // GET: api/Verify/jsonStringAddressOriginal
    public AddressResult Get(string base64AddressOriginal)
呼叫者:

var requestUri = string.Format("api/verify/{0}", base64address);
Console.WriteLine("requestUri:\n{0}", requestUri);
HttpResponseMessage response = client.GetAsync(requestUri).Result;
请求URI:

api/verify/eyJDb21wYW55IjoiIiwiQWRkcmVzcyI6Ijc3NTAgQmVsZm9ydCBQYXJrd2F5IDIwMCIsI
kFkZHJlc3MyIjoiIiwiU3VpdGUiOiIiLCJDaXR5IjoiSmFja3NvbnZpbGxlIiwiU3RhdGUiOiJGTCIsI
lppcCI6IjMyMjU2IiwiUGx1czQiOiIiLCJMYXN0TGluZSI6IiIsIkNvdW50cnlDb2RlIjoiIiwiVXJiY
W5pemF0aW9uIjoiIiwiTGFzdE5hbWUiOiIiLCJQYXJzZWRBZGRyZXNzUmFuZ2UiOiIiLCJQYXJzZWRQc
mVEaXJlY3Rpb24iOiIiLCJQYXJzZWRTdHJlZXROYW1lIjoiIiwiUGFyc2VkU3VmZml4IjoiIiwiUGFyc
2VkUG9zdERpcmVjdGlvbiI6IiIsIlBhcnNlZFN1aXRlTmFtZSI6IiIsIlBhcnNlZFN1aXRlUmFuZ2UiO
iIiLCJQYXJzZWRSb3V0ZVNlcnZpY2UiOiIiLCJQYXJzZWRMb2NrQm94IjoiIiwiUGFyc2VkRGVsaXZlc
nlJbnN0YWxsYXRpb24iOiIifQ==
Error code: BadRequest
Reason: Bad Request
我认为这是一个错误的请求,但我不知道以什么方式。似乎没有响应对象的进一步属性详细说明400状态代码表示的错误

这是我的第一个WebApi,所以在回答时,不要假设我的配置。
VS2013更新3,Web Api,使用HttpClient作为调用方。

我没有计算URI中的字符数,但是很长的URI(>2000个字符)可能会导致问题。尝试将此作为POST请求,并将base64数据放入请求正文。

507个字符。我考虑过了。波斯特也不会平静?我只是传递一个值(地址)并想要一个值(已清理的地址)返回。我不同意POST不是RESTful。GET在REST术语中有非常明确的定义语义,意思是“给我一个已经存在于服务器上的资源”。我假设带有base64字符串的URL在语义上不寻址预先存在的资源,是吗?同意,这就是我正在做的,传递一个错误的地址,并要求服务器为我提供一个已经存在于USPS数据文件中的好地址。我并没有在服务器上创建或更新任何可以证明POST的新内容。POST和PUT不同,它不一定要更新或创建任何内容。POST的语义定义并不那么狭隘。除此之外,我对休息的要求不会太严格,直到它妨碍了你。看起来你的长度是对的。当requestUri.Length为255时,它将成功,然后开始失败。因此,根据经验证据,255必须是传递给Httpclient.GetAsync(字符串)的最大长度字符串,该字符串不会导致BadRequest。我猜这一定是一篇文章。Uri末尾的==会导致这种情况吗?嗯,也许我需要对base64进行URL编码。听起来很有可能。我很好奇这是否解决了你的问题。没有乐趣。我把两个相等的数字从末尾删掉了,但仍然收到了不好的请求。