"अंतर्निहित कनेक्शन बंद कर दिया गया था: एक अनपेक्षित त्रुटि एक भेजने पर हुई।" एसएसएल सर्टिफिकेट के साथ


119

समस्या: मुझे यह अपवाद "अनौपचारिक संबंध के तहत मिला हुआ है: मेरे लॉग में" एक लिंक पर अनधिकृत त्रुटि का पता चला है और यह हमारे ईमेल मार्केटिंग सिस्टम के साथ हमारे Oem एकीकरण को यादृच्छिक समय में अलग कर रहा है [1 घंटे - 4 घंटे] से अलग

मेरी वेबसाइट IIS 7.5.7600 के साथ एक विंडोज़ सर्वर 2008 R2 पर होस्ट की गई है। इस वेबसाइट में बड़ी संख्या में OEM घटक और व्यापक डैशबोर्ड है। वेबसाइट के सभी अन्य तत्वों के साथ हमारा ईमेल मार्केटिंग कंपोनेंट को छोड़कर सब कुछ ठीक रहता है, जिसे हम अपने डैशबोर्ड के भीतर एक iframe समाधान के रूप में उपयोग कर रहे हैं। जिस तरह से यह काम करता है, मैं सभी क्रेडेंशियल्स के साथ एक httpWebRequestobject भेजता हूं और मुझे एक url वापस मिलता है जिसे मैं एक iframe में डालता हूं और यह काम करता है। लेकिन यह केवल कुछ समय के लिए काम करता है [1 घंटे - 4 घंटे] और फिर मुझे नीचे दिया गया अपवाद मिलता है "अनधिकृत संबंध का खुलासा किया गया: AN UNEXPECTED ERROR OCCURRED ON A SEND" और भले ही सिस्टम URL को httpWebRequest से प्राप्त करने का प्रयास करे। एक ही अपवाद के साथ विफल रहता है। इसे फिर से काम करने का एकमात्र तरीका एप्लिकेशन पूल को रीसायकल करना है या कुछ भी web.config में संपादित किया गया है।

विकल्प की कोशिश की

स्पष्ट रूप से जोड़ा गया, keep-alive = false

keep-alive = true

समय बढ़ा दिया: <httpRuntime maxRequestLength="2097151" executionTimeout="9999999" enable="true" requestValidationMode="2.0" />

मैंने इस पृष्ठ को एक गैर एसएसएल वेबसाइट पर यह जांचने के लिए अपलोड किया है कि क्या हमारे उत्पादन सर्वर पर एसएसएल प्रमाण पत्र कुछ को छोड़ने के लिए कनेक्शन बना रहा है।

संकल्प की दिशा में किसी भी दिशा की बहुत सराहना की जाती है।

कोड:

Public Function CreateHttpRequestJson(ByVal url) As String
    Try
        Dim result As String = String.Empty
        Dim httpWebRequest = DirectCast(WebRequest.Create("https://api.xxxxxxxxxxx.com/api/v3/externalsession.json"), HttpWebRequest)
        httpWebRequest.ContentType = "text/json"
        httpWebRequest.Method = "PUT"
        httpWebRequest.ContentType = "application/x-www-form-urlencoded"
        httpWebRequest.KeepAlive = False
        'ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3

        'TODO change the integratorID to the serviceproviders account Id, useremail 
        Using streamWriter = New StreamWriter(httpWebRequest.GetRequestStream())
            Dim json As String = New JavaScriptSerializer().Serialize(New With { _
            Key .Email = useremail, _
            Key .Chrome = "None", _
            Key .Url = url, _
            Key .IntegratorID = userIntegratorID, _
            Key .ClientID = clientIdGlobal _
            })

            'TODO move it to the web.config, Following API Key is holonis accounts API Key
            SetBasicAuthHeader(httpWebRequest, holonisApiKey, "")
            streamWriter.Write(json)
            streamWriter.Flush()
            streamWriter.Close()

            Dim httpResponse = DirectCast(httpWebRequest.GetResponse(), HttpWebResponse)
            Using streamReader = New StreamReader(httpResponse.GetResponseStream())
                result = streamReader.ReadToEnd()
                result = result.Split(New [Char]() {":"})(2)
                result = "https:" & result.Substring(0, result.Length - 2)
            End Using
        End Using
        Me.midFrame.Attributes("src") = result
    Catch ex As Exception
        objLog.WriteLog("Error:" & ex.Message)
        If (ex.Message.ToString().Contains("Invalid Email")) Then
            'TODO Show message on UI
        ElseIf (ex.Message.ToString().Contains("Email Taken")) Then
            'TODO Show message on UI
        ElseIf (ex.Message.ToString().Contains("Invalid Access Level")) Then
            'TODO Show message on UI
        ElseIf (ex.Message.ToString().Contains("Unsafe Password")) Then
            'TODO Show message on UI
        ElseIf (ex.Message.ToString().Contains("Invalid Password")) Then
            'TODO Show message on UI
        ElseIf (ex.Message.ToString().Contains("Empty Person Name")) Then
            'TODO Show message on UI
        End If
    End Try
End Function


Public Sub SetBasicAuthHeader(ByVal request As WebRequest, ByVal userName As [String], ByVal userPassword As [String])
    Dim authInfo As String = Convert.ToString(userName) & ":" & Convert.ToString(userPassword)
    authInfo = Convert.ToBase64String(Encoding.[Default].GetBytes(authInfo))
    request.Headers("Authorization") = "Basic " & authInfo
End Sub`

क्या आपको इसका कभी पता चला?
ब्रेट जी

11
हां मैं इस कोड के साथ काम करने में सक्षम था ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls or SecurityProtocolType.Ssl3
अरविंद मोरवाल

मैं उसी मुद्दे के लिए मरने वाला था। एक ही मुद्दे से जूझते हुए मुझे कई घंटे लगे। आप टिप्पणियों के लिए धन्यवाद, इसने मेरा दिन बचाया।
समीर जावेद

2
@ user3458212 आपको अपनी टिप्पणी एक उत्तर के रूप में जोड़नी चाहिए
icc97

2
मेरे मामले में, विजुअल स्टूडियो 15 में वेब साइट चलाने से सब कुछ ठीक हो जाता है, लेकिन अंत में, क्योंकि मैं सर्वर में फ्रेमवर्क को अपग्रेड नहीं कर सकता हूं, और टीएलएस 1.2 को मजबूर करने और रखने के लिए सक्षम नहीं होने पर, मुझे एक मध्यवर्ती सेटअप करना पड़ा वेब सर्वर लक्ष्य वेब सर्वर को प्रॉक्सी करता है जो कनेक्शन को छोड़ देता है।
जोस रॉबर्टो गार्सिया चिको

जवाबों:


193

मेरे लिए यह tls12 था:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

42
ध्यान दें कि आपको सावधान रहना चाहिए क्योंकि यह परिवर्तन आपके AppDomain के लिए वैश्विक है, और किसी भी साइट पर कॉल का कारण बनेगा जो TLS 1.2 को विफल करने की पेशकश नहीं करता है (जिसे आप पसंद कर सकते हैं कि डेटा ट्रांसपोर्ट किया जाना वास्तव में संवेदनशील है)। टीएलएस 1.2 को पसंद करने के लिए, लेकिन फिर भी 1.1 और 1.0 की अनुमति दें, आपको उन्हें OR करना होगा:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
Dust

यहाँ भी, तुमने मेरी जान बचाई, इतना समय बिताया कि यह पता लगाने के लिए कि रेस्टर्शप में क्या गड़बड़ है
darul75

यह समाधान उन लोगों के लिए भी काम करता है जो रेस्टशरप का उपयोग नहीं करते हैं और साथ ही उन लोगों के लिए भी हैं जो सर्विसपॉइंटमैनगर का उपयोग नहीं कर रहे हैं। बस अपनी वेबरॉस्ट कॉल या जो भी आप अनुरोध करने के लिए उपयोग कर रहे हैं, उससे पहले उपरोक्त पंक्ति को कॉपी और पेस्ट करें। मैंने उपरोक्त कारणों के कारण शुरू में इस समाधान को नजरअंदाज कर दिया था।
गोकू_डा_मास्टर १६'१_ को १_:

या बस इसे वहां जोड़ें जो पहले से ही वहां है ... System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
uosjead

8
पावरशेल में ऐसा करने के लिए, "बाइनरी या" उन्हें एक साथ पसंद है:[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls
एडम एस

62

यदि आप .net 4.0 के साथ फंस गए हैं और लक्ष्य साइट TLS 1.2 का उपयोग कर रहा है, तो आपको इसके बजाय निम्नलिखित पंक्ति की आवश्यकता है। ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

स्रोत: TLS 1.2 और .NET समर्थन: कनेक्शन त्रुटियों से कैसे बचें


5
बहुत बढ़िया! मैं बस (SecurityProtocolType)768"Tls11" (यानी TLS 1.1) के लिए इस्तेमाल किया जा सकता है।
सोलोमन रटज़की

2
यह वास्तव में मदद करता है। इसने मेरा दिन बचाया। मुझे .Net 2.0 के साथ रहना होगा।
हाओ गुयेन

22

नीचे दिए गए कोड ने समस्या हल कर दी

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls Or SecurityProtocolType.Ssl3

5
यह काम करेगा, हालांकि, ध्यान रखें कि ServicePointManager.SecurityProtocolएक स्थिर वस्तु है जिसका अर्थ है कि इस मूल्य को बदलने से सभी उप-अनुक्रम WebRequestया WebClientकॉल प्रभावित होंगे । AppDomainयदि आप ServicePointManagerअलग सेटिंग करना चाहते हैं तो आप अलग बना सकते हैं । अधिक जानकारी के लिए stackoverflow.com/questions/3791629/… देखें ।
स्टैक 247

1
यह कोड क्या कर रहा है यह समझने के लिए सहायक अतिरिक्त रीडिंग: stackoverflow.com/questions/26389899/…
जॉन श्नाइडर

@ मार्नी मैं इसे अपने एप्लिकेशन की रचना रूट में डाल देता हूं, इसलिए यह किसी भी I / O से पहले कभी नहीं होता है
JG में SD

@ मार्नी इसे एक स्थिर कंस्ट्रक्टर में डालें, इसलिए इसे ठीक उसी समय निष्पादित किया जाता है, जब पहली बार क्लास एक्सेस किया जाता है। मुझे हालांकि सभी मामलों को कवर करने के लिए सभी प्रोटोकॉल सक्षम करने थे।
Nyerguds

14

मैं अब एकीकरण के साथ दिनों के लिए एक ही मुद्दा रहा है कि सिर्फ "पहले काम करने के लिए इस्तेमाल किया"।

सरासर अवसाद से बाहर, मैंने बस कोशिश की

 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Ssl3;

इसने इसे मेरे लिए हल कर दिया..क्योंकि एकीकरण केवल सख्ती से SSLv3 का उपयोग करता है।

मुझे एहसास हुआ कि अगर फिडलर ने यह कहते हुए कि "खाली टीएलएस वार्ता सिफर" या पसंद की कोई चीज है, तो बंद कर दिया।

उम्मीद है कि यह काम करता है!


ध्यान दें कि, भले ही आपके कोड को TLS की आवश्यकता न हो, यदि सर्वर इसे DOES के साथ संचार कर रहा है, तो यह TLS के साथ बातचीत करने और यदि यह नहीं हो सकता है तो विफल हो जाएगा। खाली टीएलएस वार्ता सिफर वह स्लॉट था जो आपको अंततः आपूर्ति किए गए टीएलएस प्रोटोकॉल एक्सचेंज की उम्मीद कर रहा था। यह संभवतः "सर्वर से पहले काम करता था" क्योंकि सर्वर व्यवस्थापक ने संभवतः उस सर्वर पर टीएलएस को सक्षम किया था जिसके साथ आपका एप्लिकेशन संचार कर रहा था।
vapcguy

13

मेरे मामले में मैं जिस साइट से जुड़ रहा हूं, उसे टीएलएस 1.2 में अपग्रेड किया गया है। इसके परिणामस्वरूप मुझे अपने वेब सर्वर पर .net 4.5.2 स्थापित करना पड़ा ताकि इसका समर्थन किया जा सके।


क्या यह मशीन पर रजिस्ट्री स्तर पर किया जा सकता है? मैंने टीएलएस 1.0, 1.1, 1.2 को छोड़कर सभी एसएसएल प्रोटोकॉल को निष्क्रिय कर दिया है, हालांकि यह मेरी समझ है कि पीसीआई के अनुपालन के लिए टीएलएस 1.2 से कम कुछ भी जल्द ही हटा दिया जाना चाहिए।
brendo234

13

अपने वेब.config / App.config पर जाएं, जो सत्यापित करने के लिए .net रनटाइम आप उपयोग कर रहे हैं

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>

यहाँ समाधान है:

  1. .NET 4.6 और ऊपर। आपको TLS 1.2 का समर्थन करने के लिए कोई अतिरिक्त कार्य करने की आवश्यकता नहीं है, यह डिफ़ॉल्ट रूप से समर्थित है।

  2. .NET 4.5। TLS 1.2 का समर्थन किया गया है, लेकिन यह एक डिफ़ॉल्ट प्रोटोकॉल नहीं है। इसका उपयोग करने के लिए आपको ऑप्ट-इन करना होगा। निम्नलिखित कोड TLS 1.2 को डिफ़ॉल्ट बना देगा, सुरक्षित संसाधन से संबंध बनाने से पहले इसे निष्पादित करना सुनिश्चित करें:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

  1. .NET 4.0 TLS 1.2 समर्थित नहीं है, लेकिन यदि आपके पास .NET 4.5 (या ऊपर) सिस्टम पर स्थापित है तो आप अभी भी TLS 1.2 का विकल्प चुन सकते हैं, भले ही आपका एप्लिकेशन फ्रेमवर्क इसका समर्थन नहीं करता हो। एकमात्र समस्या यह है कि .NET 4.0 में SecurityProtocolType में TLS1.2 के लिए प्रविष्टि नहीं है, इसलिए हमें इस एनम मान के संख्यात्मक प्रतिनिधित्व का उपयोग करना होगा:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

  1. .NET 3.5 या नीचे। TLS 1.2 समर्थित नहीं है (*) और कोई वर्कअराउंड नहीं है। अपने एप्लिकेशन को फ्रेमवर्क के अधिक हाल के संस्करण में अपग्रेड करें।

6

मैंने पाया है कि यह एक संकेत है कि सर्वर जहां आप कोड तैनात कर रहे हैं, वहां एक पुराना .NET फ्रेमवर्क स्थापित है जो TLS 1.1 या TLS 1.2 का समर्थन नहीं करता है। ठीक करने के लिए कदम:

  1. अपने उत्पादन सर्वर (IIS और SQL) पर नवीनतम .NET रनटाइम इंस्टॉल करना
  2. अपने विकास मशीनों पर नवीनतम .NET डेवलपर पैक स्थापित करना ।
  3. अपने Visual Studio प्रोजेक्ट्स में "लक्ष्य रूपरेखा" सेटिंग्स को नवीनतम .NET फ्रेमवर्क में बदलें।

आप इस URL से नवीनतम .NET डेवलपर पैक और रनटाइम प्राप्त कर सकते हैं: http://getdotnet.azurewebooks.net/target-dotnet-platforms.html


4.5.2 से 4.6.1 तक लक्ष्य रूपरेखा बदल दी, और काम करना शुरू कर दिया, धन्यवाद पैट्रिक।
विवेक शर्मा

4

हमारे पास यह मुद्दा था जिससे हमारी एपीआई तक पहुँचने वाली एक वेबसाइट को "अंतर्निहित कनेक्शन बंद हो गया था: एक अनपेक्षित त्रुटि एक भेजने पर हुई थी।" संदेश।

उनका कोड .NET 3.x और 2.2 का मिश्रण था, जैसा कि मैं समझता हूं कि इसका मतलब है कि वे टीएलएस 1.0 का उपयोग कर रहे हैं।

नीचे दिए गए उत्तर आपको टीएलएस 1.0, एसएसएल 2 और एसएसएल 3 को सक्षम करके समस्या का निदान करने में मदद कर सकते हैं, लेकिन बहुत स्पष्ट होने के लिए, आप लंबे समय तक ऐसा नहीं करना चाहते हैं क्योंकि उन सभी प्रोटोकॉल को असुरक्षित माना जाता है और अब नहीं होना चाहिए इस्तेमाल किया :

हमारे आईआईएस को उनके एपीआई कॉल का जवाब देने के लिए हमें टीआईएस के संस्करणों को स्पष्ट रूप से सक्षम करने के लिए आईआईएस के सर्वर पर रजिस्ट्री सेटिंग्स को जोड़ना था - नोट: आपको इन परिवर्तनों को करने के बाद विंडोज सर्वर (न केवल आईआईएस सेवा) को फिर से शुरू करना होगा:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.0\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.0\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.1\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.1\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

यदि वह ऐसा नहीं करता है, तो आप SSL 2.0 के लिए प्रविष्टि जोड़कर भी प्रयोग कर सकते हैं:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

स्पष्ट होने के लिए, यह एक अच्छा समाधान नहीं है , और सही समाधान कॉलर को टीएलएस 1.2 का उपयोग करने के लिए प्राप्त करना है, लेकिन उपरोक्त निदान में मदद कर सकता है कि यह मुद्दा है।

आप इस पॉवरस्क्रिप्‍ट स्क्रिप्ट के साथ उन रेग प्रविष्टियों को जोड़ने की गति बढ़ा सकते हैं:

$ProtocolList       = @("SSL 2.0","SSL 3.0","TLS 1.0", "TLS 1.1", "TLS 1.2")
$ProtocolSubKeyList = @("Client", "Server")
$DisabledByDefault = "DisabledByDefault"
$Enabled = "Enabled"
$registryPath = "HKLM:\\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\"

foreach($Protocol in $ProtocolList)
{
    Write-Host " In 1st For loop"
        foreach($key in $ProtocolSubKeyList)
        {         
            $currentRegPath = $registryPath + $Protocol + "\" + $key
            Write-Host " Current Registry Path $currentRegPath"
            if(!(Test-Path $currentRegPath))
            {
                Write-Host "creating the registry"
                    New-Item -Path $currentRegPath -Force | out-Null             
            }
            Write-Host "Adding protocol"
                New-ItemProperty -Path $currentRegPath -Name $DisabledByDefault -Value "0" -PropertyType DWORD -Force | Out-Null
                New-ItemProperty -Path $currentRegPath -Name $Enabled -Value "1" -PropertyType DWORD -Force | Out-Null    
    }
}
 
Exit 0

यह VMM के लिए TLS सेट अप के लिए Microsoft मदद पृष्ठ से स्क्रिप्ट का एक संशोधित संस्करण है । यह मूल बातें। यह लेख मूल रूप से इन सेटिंग्स को देखने का विचार देने वाला पेज था।


हमारी समस्या टीम सिटी के माध्यम से एक रिलीज पाइपलाइन के आसपास थी जो अचानक बंद हो गई जब हमने आपके लिए लाइव सर्वर का प्रमाण पत्र बदल दिया। हमने पहले ही सर्वर को केवल TLS1.2 का उपयोग करने के लिए बदल दिया था और हमारी टीम सिटी पाइपलाइन ने काम करना बंद कर दिया ... एक सपने की तरह काम किया ... रेग प्रविष्टियों को जोड़ा और सर्वर को पुनः आरंभ किया ... BOOM !!! धन्यवाद tomRedox !!
गावसोप्पा २

@ ग्वासहोप्पा, केवल इस बात को दोहराने के लिए कि उपरोक्त समस्या का निदान करने के लिए केवल एक स्टॉपगैप है। अब आप जानते हैं कि यह एक TLS संस्करण समस्या है जिसका समाधान रिलीज पाइपलाइन को बदलना है ताकि यह TLS1.2 के साथ काम कर सके और फिर TLS <1.2 और SSL 2 और 3 को फिर से बंद कर दे। मैंने ऊपर दिए गए उत्तर को थोड़ा तनाव देने के लिए अद्यतन किया है।
टोमरेडॉक्स


2

अगर यह किसी की मदद करता है, तो हमारा प्रमाण पत्र लापता होने का मुद्दा था। पर्यावरण .net 4.6 के साथ विंडोज सर्वर 2016 स्टैंडर्ड है।

एक स्व-होस्टेड WCF सेवा https URI है, जिसके लिए Service.Open () त्रुटियों के बिना निष्पादित करेगा। एक और धागा https: // OurIp: 443 / OurService; wsdl को एक्सेस करता रहेगा ताकि यह सुनिश्चित हो सके कि सेवा उपलब्ध थी। WSDL का उपयोग करना विफल रहा:

अंतर्निहित कनेक्शन बंद कर दिया गया था: एक अनपेक्षित त्रुटि एक भेजने पर हुई।

ServicePointManager.SecurityProtocol का उपयोग लागू सेटिंग्स के साथ नहीं हुआ। सर्वर भूमिकाओं और विशेषताओं के साथ खेलने से भी मदद नहीं मिली। इसके बाद जैस जॉर्ज , एसई में कदम रखा , एक-दो मिनट में मुद्दे को सुलझायाJaise ने IIS में एक स्वयं हस्ताक्षरित प्रमाणपत्र स्थापित किया, जो इस समस्या का कारण है। इस मुद्दे को संबोधित करने के लिए उन्होंने ऐसा किया:

(1) IIS प्रबंधक खोलें (inetmgr) (2) बाएं पैनल में सर्वर नोड पर क्लिक करें, और "सर्वर प्रमाणपत्र" पर डबल क्लिक करें। (3) दाहिने पैनल पर "सेल्फ-सिग्नर्ड सर्टिफिकेट बनाएं" पर क्लिक करें और जो भी आप चाहते हैं, उसके अनुकूल नाम लिखें। (4) बाएं पैनल में "डिफ़ॉल्ट वेब साइट" पर क्लिक करें, दाहिने पैनल पर "बाइंडिंग" पर क्लिक करें, "ऐड" पर क्लिक करें, "https" चुनें, आपके द्वारा बनाए गए प्रमाण पत्र का चयन करें और "ओके" पर क्लिक करें (5) पहुंच https URL, यह सुलभ होना चाहिए।


आपको लगा होगा कि सर्वर व्यवस्थापक ने SSL प्रमाणपत्र जोड़ा होगा, हालांकि! डी 'ओह! lol :) मैं ऐसा होते हुए देख सकता हूँ, हालाँकि - या एक समय सीमा समाप्त हो चुके प्रमाण पत्र की आवश्यकता होगी जो नवीकरण की आवश्यकता होगी और अधिक लागू परिदृश्य होगा।
vapcguy

2

आप बस अपने एप्लिकेशन संस्करण को 4.0 से 4.6 की तरह बदलें और उन कोड को प्रकाशित करें।

कोड लाइनों के नीचे भी जोड़ें:

httpRequest.ProtocolVersion = HttpVersion.Version10; 
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

1

HTTP डिबगिंग प्रॉक्सी का उपयोग करने से इसका कारण बन सकता है - जैसे कि फ़िडलर।

मैं एक स्थानीय फ़ाइल (Apple.com के लिए प्रमाणीकरण) से पीएफएक्स प्रमाणपत्र लोड कर रहा था और यह विफल हो गया क्योंकि फिडलर इस प्रमाण पत्र को पारित करने में सक्षम नहीं था।

जाँच करने के लिए फ़िडलर को अक्षम करने का प्रयास करें और यदि वह समाधान है तो आपको संभवतः अपनी मशीन पर प्रमाणपत्र स्थापित करने की आवश्यकता है या किसी तरह से जिसे फ़िडलर उपयोग कर सकता है।


0

नीचे दिए गए कोड ने मेरी समस्या हल कर दी:

request.ProtocolVersion = HttpVersion.Version10; // THIS DOES THE TRICK
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.