विफल रहता है मुझे इस समस्या का निवारण करने में एक भयानक समय है। मुझे एक आवेदन से लगातार दूसरे एप्लिकेशन में पुन: उत्पन्न करने का एक भयानक समय भी है।.NET 4.5 HttpClient PUT या SSL पर POST हमेशा
कुछ परिस्थितियों में, जिन्हें मैं पहचानने के लिए प्रतीत नहीं कर सकता, PUT
और POST
HttpClient
का उपयोग निम्नलिखित अपवादों में करते हुए कॉल करता है।
अनुरोध भेजते समय एक त्रुटि हुई।
आंतरिक अपवाद:
अंतर्निहित कनेक्शन बंद था: प्रेषण पर एक अनपेक्षित त्रुटि हुई।आंतरिक अपवाद:
यह ऑपरेशन पूर्ण एसिंक्रोनस परिणाम ऑब्जेक्ट पर नहीं किया जा सकता है।
सबकुछ HTTP के साथ काम करता प्रतीत होता है, यह केवल HTTPS पर होता है।
प्रमाण पत्र मान्य हैं, लेकिन मैं ServicePointManager.ServerCertificateValidationCallback += (s, c, ch, es) => true;
मैं स्थापित करने client.DefaultRequestHeaders.ExpectContinue = false;
मैं कोशिश की है, क्या एक लाख, अन्य हेडर, प्रमाणीकरण से लेकर बातें की तरह लगता है की कोशिश की है की स्थापना की कोशिश की है, आदि
क्या किसी को पता है कि मैं और क्या देख सकता हूं, कोशिश कर सकता हूं, आदि?
कोड स्निपेट:
// this is my registration in my IoC container...
var handler = new HttpClientHandler
{
UseDefaultCredentials = true,
Credentials = CredentialCache.DefaultNetworkCredentials,
};
var client = HttpClientFactory.Create(handler);
client.BaseAddress = new Uri(Properties.Settings.Default.BaseUrl);
client.DefaultRequestHeaders.Add("X-CustomHeader", "value");
// _client is constructor injected into my class...
var response = await _client.PutAsJsonAsync("api/resource/" + id, model).ConfigureAwait(false);
response.EnsureSuccessStatusCode(); // <-- never executes...
अद्यतन:
अगर मैं ConfigureAwait(false)
दूर ले यह ठीक काम करता है।
नोट, यह एक WPF ऐप है, विशेष रूप से, यह एक विजुअल स्टूडियो एक्सटेंशन है। हालांकि, मैं ठीक उसी समस्या के साथ एक ASP.NET MVC 4 आवेदन की क्या ज़रूरत है, और कहा कि आवेदन बिल्कुल ConfigureAwait(false)
फोन नहीं करता है ...
अद्यतन 2:
मैं शामिल करने के लिए कोड का टुकड़ा अद्यतन HttpClient
कक्षा का तत्कालता। कोड स्निपेट में शामिल नहीं होने वाली एकमात्र चीज मॉडल प्रकार और घोषणा है। यह अप्रासंगिक होना चाहिए, क्योंकि यह एक जटिल प्रकार के साथ सभी ऑटो गुणों के साथ एक धारावाहिक वर्ग है।
अद्यतन 3:
अगर यह प्रासंगिक है मैं नहीं जानता, लेकिन मैं कुछ बातें जो मुझे अजीब लग पाया है।
HTTP/1:
जब ऊपर कोड, फ़िडलर में क्रियान्वित करने, मैं
POST
पर एक401
, 2CONNECT
की जो निम्न HTTP प्रतिक्रियाओं में परिणाम के बाद मिलता है।1 200 कनेक्शन स्थापित किया गया
कनेक्शन: करीब
अद्यतन 4:
मैं इस होने के लिए मेरी आईओसी पंजीकरण कोड बदल दिया है:
var handler = new HttpClientHandler
{
UseDefaultCredentials = true,
Credentials = CredentialCache.DefaultCredentials,
};
var client = HttpClientFactory.Create(handler);
client.BaseAddress = new Uri(Properties.Settings.Default.BaseUrl);
client.DefaultRequestHeaders.Add("X-CustomHeader", "value");
और अब यह विफल रहता है, लेकिन जब मैं खोलने फिडलर और इसे यातायात को डिक्रिप्ट करने दें ... यह काम करता है!
अद्यतन 5:
मेरा मानना है कि यह एक सर्वर समस्या है, या एक प्रमाणपत्र मुद्दा होना चाहिए। यहां से जांच करने के लिए कोई सुझाव बहुत सराहना की जाएगी। कर्ट मान्य हैं और एक विश्वसनीय सीए से जारी किए जाते हैं।
अद्यतन 6:
अधिक डिबगिंग और समस्या निवारण। ServicePointManager
CertificateValidationCallback
से पहले अपवाद होता है।
वास्तविक प्रेषण कोड का एक अंश दिखाएं। –
जोड़ा गया कोड स्निपेट, लेकिन यह वास्तव में केवल मूल उपयोग है। कुछ भी आकर्षक नहीं। – Adam
क्या आप अनुरोध पूरा होने से पहले '_client' का निपटान कर रहे हैं? क्या आप एक न्यूनतम repro पोस्ट कर सकते हैं? –