Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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# asp.net核心httpclient参数异常_C#_Asp.net Core - Fatal编程技术网

C# asp.net核心httpclient参数异常

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.

我试图使用HttpClient发出POST请求,但它一直抛出ArgumentNullException。 在这个调用中
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();
    }