C# 异常:此实例已启动一个或多个请求。只能在发送第一个请求之前修改属性

C# 异常:此实例已启动一个或多个请求。只能在发送第一个请求之前修改属性,c#,asp.net,.net,dotnet-httpclient,C#,Asp.net,.net,Dotnet Httpclient,我正在使用将我的应用程序与他们的RESTAPI集成。我已经编写了一个概念验证应用程序,一切都很好,但是当我尝试从实际应用程序中执行时,在尝试进行API调用时会出现以下错误: “此实例已启动一个或多个请求。只能在发送第一个请求之前修改属性。” 我已经克隆了源代码,在本地构建,用本地引用替换了nuget引用,并进行了调试。创建WebRequestHandler时引发异常: requestHandler = new WebRequestHandler { AutomaticDecompress

我正在使用将我的应用程序与他们的RESTAPI集成。我已经编写了一个概念验证应用程序,一切都很好,但是当我尝试从实际应用程序中执行时,在尝试进行API调用时会出现以下错误:

“此实例已启动一个或多个请求。只能在发送第一个请求之前修改属性。”

我已经克隆了源代码,在本地构建,用本地引用替换了nuget引用,并进行了调试。创建WebRequestHandler时引发异常:

requestHandler = new WebRequestHandler
{
    AutomaticDecompression = DecompressionMethods.GZip,
    AllowAutoRedirect = false,
    UseDefaultCredentials = false,
    UseCookies = false
};
应用程序正在使用.NET 4.0、Microsoft.NET.HTTP 2.2.29。我唯一能找到进一步挖掘代码的地方是on。在HttpClientHandler中,有一个volatile bool operationStarted,它仅在调用Send时设置,如果在设置时修改属性,则会引发异常

internal void CheckDisposedOrStarted()
{
    CheckDisposed();
    if (operationStarted)
    {
        throw new InvalidOperationException(SR.net_http_client_operation_started);
    }
}
我确信这段代码在我第一次点击它之前没有被调用,所以我只能猜测我的应用程序中的其他东西已经在与HttpClient进行调用,并且它还没有被处理,但我不知道如何在不逐条解构应用程序的情况下找到它,这是一项艰巨的任务

我想调试Microsoft.Net.Http 2.2.29 for.Net 4.0代码,以试图找到罪魁祸首,但找不到完整且可下载格式的源代码。我可以尝试从symbolsource.org上的代码构建它,但这并不理想

有人能告诉我源代码吗?或者提出其他想法?
谢谢。

因为我从来没有使用过这个“Checkout.com.NET SDK”,所以我也不知道发生了什么。
但是,由于您已经在本地构建了它,如果您可以在使用HttpClient的任何地方添加带有调用堆栈跟踪的日志,这将非常有用。这样您就可以跟踪意外第一次呼叫的来源

要获取堆栈信息,可以使用

但请在完成诊断后删除它,将此类日志留在生产代码中并没有多大帮助



我得到了完全相同的错误,但那是因为我打算在调用Azure API时重用HttpClient。这是另一种情况。

因为我从未使用过这个“Checkout.com.NET SDK”,所以也无法弄清楚发生了什么。
但是,由于您已经在本地构建了它,如果您可以在使用HttpClient的任何地方添加带有调用堆栈跟踪的日志,这将非常有用。这样您就可以跟踪意外第一次呼叫的来源

要获取堆栈信息,可以使用

但请在完成诊断后删除它,将此类日志留在生产代码中并没有多大帮助



我得到了完全相同的错误,但那是因为我打算在调用Azure API时重用HttpClient。所以情况就不同了。

谢谢史蒂文。我最终使用RestSharp来进行API调用,效果很好。谢谢Steven。我最终使用RestSharp来进行API调用,效果很好。