C# asp.net核心httpclient参数异常
我试图使用HttpClient发出POST请求,但它一直抛出ArgumentNullException。 在这个调用中C# asp.net核心httpclient参数异常,c#,asp.net-core,C#,Asp.net Core,我试图使用HttpClient发出POST请求,但它一直抛出ArgumentNullException。 在这个调用中var response=wait client.PostAsync(url、内容) 我已经设置了断点并验证了值是否已填充。 是不是我遗漏了什么会导致这一切 public async Task<bool> PostSomeObject() { var transaction = new CreateTransactionRequest(); transaction.
var response=wait client.PostAsync(url、内容)代码>
我已经设置了断点并验证了值是否已填充。
是不是我遗漏了什么会导致这一切
public async Task<bool> PostSomeObject()
{
var transaction = new CreateTransactionRequest();
transaction.MerchantAuthentication.Name = "notmyName";
transaction.MerchantAuthentication.TransactionKey = "notMyKey";
transaction.TransactionRequest.TransactionType = "authOnlyTransaction";
transaction.TransactionRequest.Amount = 5;
transaction.TransactionRequest.Payment.CardCode = "999";
transaction.TransactionRequest.Payment.CardNumber = "5424000000000015";
transaction.TransactionRequest.Payment.ExpirationMonth = 12;
transaction.TransactionRequest.Payment.ExpirationYear = 20;
var url = "xml/v1/request.api";
using (HttpClient client = new HttpClient())
{
var sampleClassObjectJson = JsonConvert.SerializeObject(transaction);
client.BaseAddress = new Uri("http://localhost:56858/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent(sampleClassObjectJson, Encoding.UTF8, "application/json");
//throws NullException on this call here
var response = await client.PostAsync(url, content);
if (response.StatusCode == HttpStatusCode.OK)
return true;
else
throw new WebException("An error has occurred while calling PostSomeObject method: " + response.Content);
}
}
它不是单步执行catch语句,而是在debug的输出中抛出异常
下面是调用我的Post方法的控制器操作
public async Task<IActionResult> PaymentInformation(Payment paymentInfo)
{
var cookie = GetCheckoutCookie();
//if there isn't a cookie ID something went wrong, redirect to Index
if (cookie.ID == null)
{
return RedirectToAction("Index");
}
var cookieSession = CheckoutSession.getCheckoutSession(cookie.ID);
if (ModelState.IsValid)
{
var status = await PostSomeObject();
}
else
{
}
return PartialView();
}
公共异步任务支付信息(支付支付信息)
{
var cookie=GetCheckoutCookie();
//若并没有cookie ID,但出现了问题,请重定向到索引
如果(cookie.ID==null)
{
返回操作(“索引”);
}
var cookieSession=CheckoutSession.getCheckoutSession(cookie.ID);
if(ModelState.IsValid)
{
var status=await PostSomeObject();
}
其他的
{
}
返回PartialView();
}
请注意基本地址和您发布的地址之间的差异。注释掉BaseAddress
,并查看使用变量中的完整url是否会产生差异。同时显示变量的完整堆栈跟踪error@Nkosi我已经为NullException添加了一个try catch,由于某种原因它没有进入它,但是在输出日志中它显示异常被抛出看起来很眼熟。上述代码所属的方法。我需要看看它是什么样子,以及该方法是如何被调用的。看起来像是混合了异步/等待和阻塞调用(.Result
或.Wait()
)。ArgumentNullException应该具有stacktrace和导致问题的参数的名称。这应该会为您指出解决方案。请注意基址和您发布的地址之间的差异。注释掉BaseAddress
,并查看使用变量中的完整url是否会产生差异。同时显示变量的完整堆栈跟踪error@Nkosi我已经为NullException添加了一个try catch,由于某种原因它没有进入它,但是在输出日志中它显示异常被抛出看起来很眼熟。上述代码所属的方法。我需要看看它是什么样子,以及该方法是如何被调用的。看起来像是混合了异步/等待和阻塞调用(.Result
或.Wait()
)。ArgumentNullException应该具有stacktrace和导致问题的参数的名称。这将为您指出解决方案。
public async Task<IActionResult> PaymentInformation(Payment paymentInfo)
{
var cookie = GetCheckoutCookie();
//if there isn't a cookie ID something went wrong, redirect to Index
if (cookie.ID == null)
{
return RedirectToAction("Index");
}
var cookieSession = CheckoutSession.getCheckoutSession(cookie.ID);
if (ModelState.IsValid)
{
var status = await PostSomeObject();
}
else
{
}
return PartialView();
}