मैं एक तो यह है कि HttpModule के साथ इस किया है आप प्रत्येक मास्टर पेज में कोड डालने के बारे में चिंता करने की ज़रूरत नहीं है (यदि आपके पास एक से अधिक हैं)। यह संस्करण लोकलहोस्ट के लिए रीडायरेक्ट को भी बंद कर देता है ताकि आपके पास अपनी मशीन पर एसएसएल न हो। मूल रूप से आप इस तरह एक नया HTTP मॉड्यूल बनाने:
Public Class RedirectToHttpsModule
Implements IHttpModule
Public Sub Dispose() Implements IHttpModule.Dispose
End Sub
Public Sub Init(ByVal context As HttpApplication) Implements IHttpModule.Init
AddHandler context.BeginRequest, AddressOf context_BeginRequest
End Sub
Private Sub context_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim application As HttpApplication = TryCast(sender, HttpApplication)
If Not application.Request.IsSecureConnection And Not application.Request.IsLocal Then
application.Response.Redirect(application.Request.Url.ToString().Replace(application.Request.Url.Scheme, "https"))
End If
End Sub
End Class
तुम भी HttpModule के लिए web.config में उचित पंक्ति जोड़ने के लिए:
<httpModules>
<add type="RedirectToHttpsModule" name="RedirectToHttpsModule" />
</httpModules>
विचारों का सबसे अच्छा नहीं है। आप क्लाइंट साइड को कॉलिंग पेज पर रीडायरेक्ट कर रहे हैं। यदि किसी भी कारण से कोई एसएसएल नहीं है (कोई प्रमाण या बुरा प्रमाण नहीं है) तो आप रिकर्सिव लूप में जाएंगे। एक बेहतर विकल्प एक त्रुटि पृष्ठ पर रीडायरेक्ट करना होगा क्योंकि उपयोगकर्ता को सुरक्षित-केवल साइट/पृष्ठ दर्ज नहीं करना चाहिए जब तक कि कोड गलत तरीके से ऐसा न करे या वे URL से गड़बड़ कर रहे हों। –
यह चेतावनी के साथ अच्छी तरह से काम करता है कि string.replace विधि "http: //" से "https: //" की सभी घटनाओं को बदल देगा, न केवल आरंभिक योजना। अर्थात। यह क्वेरी स्ट्रिंग पैरामीटर में हस्तक्षेप कर सकता है। –
@Daniel यदि आपके पास:;) –