τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Επειδή ο πελάτης πρέπει να αναβαθμίσει την αρχική υπηρεσία υποστήριξης HTTP σε μια υπηρεσία που υποστηρίζει https, επειδή η αρχική υπηρεσία HTTP υλοποιείται με βάση την ενσωματωμένη υπηρεσία ακρόασης HTTP της υπηρεσίας WINDOWS και δεν υποστηρίζει https, ούτε είναι όπως άλλες WebAPI που αναπτύσσονται στις υπηρεσίες IIS Το πιστοποιητικό HTTPS φορτώνεται απευθείας όπως η υπηρεσία, επομένως εδώ πρέπει να τροποποιήσετε την αρχική υπηρεσία ώστε να υποστηρίζει https και να εκτελέσετε ρυθμίσεις σύνδεσης θύρας HTTPS στο περιβάλλον διακομιστή, ως εξής:
(Σημείωση: Οι ακόλουθες λειτουργίες απαιτούν να έχετε ήδη πιστοποιητικό HTTPS.)
1. Εγκαταστήστε το πιστοποιητικό, κάντε διπλό κλικ στο αρχείο pfx και εγκαταστήστε το στο: "τοπικός υπολογιστής”–>“προσωπικός”;
2. Κάντε διπλό κλικ για άνοιγμαcrtΠιστοποιητικό, μπορείτε να δείτε (certhash) πληροφορίες σχετικά με τα δακτυλικά αποτυπώματα στις λεπτομερείς πληροφορίες.
3. Εκτελέστε σύνδεση θύρας (προεπιλεγμένη θύρα 443)
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable
4. Υλοποίηση προγράμματος διακομιστή:
- using System;
- public class HttpService
- {
- public MyHttpServer()
- {
- System.Net.HttpListener httpListener = new System.Net.HttpListener();
- httpListener.AuthenticationSchemes = System.Net.AuthenticationSchemes.Anonymous;
- httpListener.Prefixes.Add("https://*:8000/"); // 支持https
- httpListener.Start();
- new System.Threading.Thread(new System.Threading.ThreadStart(delegate
- {
- while (true)
- {
- try
- {
- System.Net.HttpListenerContext httpListenerContext = httpListener.GetContext();
- new System.Threading.Thread(new System.Threading.ParameterizedThreadStart((input) =>
- {
- System.Net.HttpListenerContext ctx = (System.Net.HttpListenerContext)input;
- System.Net.HttpListenerRequest request = ctx.Request;
- string pram = request.QueryString["Data"];//Get入参
- string responseMessage = string.Empty;//返回值
- if (!string.IsNullOrEmpty(pram))
- {
- //Get入参
- pramOrg = pram;
- pram = System.Web.HttpUtility.UrlDecode(pram);
- }
- //POST入参
- if (request.HttpMethod == "POST")
- {
- //处理业务请求
- StreamReader reader = new StreamReader(request.InputStream, Encoding.UTF8);
- pram = reader.ReadToEnd();
- reader.Close();
- reader.Dispose();
- }
- #region 业务处理
- try
- {
- //业务处理
- responseMessage = "业务结果";
- }
- catch (Exception ex)
- {
- //异常处理
- responseMessage = ex.Message;
- }
- #endregion 业务处理
- #region 返回给调用者
- //输出类型
- httpListenerContext.Response.ContentType = "text/html; charset=UTF-8";
- //返回状态
- httpListenerContext.Response.StatusCode = 200;
- //设置授权,尝试解决Jquery跨域问题
- //httpListenerContext.Response.Headers["Access-Control-Allow-Origin"] = "*";
- //httpListenerContext.Response.Headers["Access-Control-Allow-Methods"] = "GET,POST";
- //httpListenerContext.Response.Headers["Access-Control-Max-Age"] = "1000";
- try
- {
- //输出界面内容
- if (!string.IsNullOrEmpty(responseMessage))
- {
- //返回文本内容
- using (StreamWriter writer = new StreamWriter(httpListenerContext.Response.OutputStream))
- {
- writer.Write(responseMessage);
- }
- }
- }
- catch
- {
- //刷新太快异常,不做处理
- }
- #endregion 返回给调用者
- })).Start(httpListenerContext);
- }
- catch
- { }
- }
- })).Start();
- }
- }
Εάν αναφερθεί σφάλμα κατά τη διαδικασία δέσμευσης θύρας παραπάνω ή η προσθήκη αποτύχει, μπορείτε να ανατρέξετε στην ακόλουθη επεξεργασία:
1. Ελέγξτε εάν οι παράμετροι της εντολής netsh είναι σωστές.
2. Αποτυχία προσθήκης πιστοποιητικού SSL, σφάλμα: 1312 Η καθορισμένη περίοδος σύνδεσης δεν υπάρχει. Μπορεί να έχει τερματιστεί. Μέθοδος επεξεργασίας:
Πληκτρολογήστε WIN+R και πληκτρολογήστε mmc.exe, ως εξής:
Κάντε κλικ στο «OK» και θα εμφανιστεί η ακόλουθη διεπαφή ριζικού κόμβου κονσόλας:
Επιλέξτε File->Add/Delete Snap-in ή χρησιμοποιήστε απευθείας το πλήκτρο συντόμευσης ctrl+m για να εμφανιστεί το ακόλουθο αναδυόμενο παράθυρο και να εκτελέσετε τη λειτουργία:
Στη συνέχεια, μεταβείτε στο προσωπικό πιστοποιητικό εισαγωγής
Τέλος, συνδέστε το πιστοποιητικό SSL με τον αριθμό θύρας
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable