2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Weil der Kunde den ursprünglichen HTTP-Backend-Dienst auf einen Dienst aktualisieren muss, der https unterstützt, weil der ursprüngliche HTTP-Dienst auf der Grundlage des integrierten HTTP-Abhördienstes des WINDOWS-Dienstes implementiert ist und weder https unterstützt noch mit anderen vergleichbar ist In IIS bereitgestellte WebAPIs werden direkt wie der Dienst geladen. Daher müssen Sie hier den ursprünglichen Dienst ändern, um https zu unterstützen und HTTPS-Portbindungseinstellungen in der Serverumgebung vorzunehmen:
(Hinweis: Für die folgenden Vorgänge ist es erforderlich, dass Sie bereits über ein HTTPS-Zertifikat verfügen.)
1. Installieren Sie das Zertifikat, doppelklicken Sie auf die PFX-Datei und installieren Sie sie unter: „lokalen Computer”–>“persönlich”;
2. Zum Öffnen doppelklickencrtZertifikat, Sie können (certhash) Fingerabdruck-bezogene Informationen in den detaillierten Informationen sehen;
3. Portbindung durchführen (Standardport 443)
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable
4. Implementierung des Serverprogramms:
- 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();
- }
- }
Wenn beim oben genannten Portbindungsprozess ein Fehler gemeldet wird oder das Hinzufügen fehlschlägt, können Sie auf die folgende Verarbeitung zurückgreifen:
1. Überprüfen Sie, ob die Parameter des Befehls netsh korrekt sind.
2. SSL-Zertifikat konnte nicht hinzugefügt werden, Fehler: 1312 Die angegebene Anmeldesitzung existiert nicht. Möglicherweise wurde es beendet. Verarbeitungsmethode:
Tastatur WIN+R und geben Sie mmc.exe wie folgt ein:
Klicken Sie auf „OK“ und die folgende Konsolen-Root-Knoten-Oberfläche wird angezeigt:
Wählen Sie Datei->Snap-In hinzufügen/löschen oder verwenden Sie direkt die Tastenkombination Strg+M, um das folgende Popup zu öffnen und den Vorgang auszuführen:
Dann gehen Sie zum persönlichen Einfuhrzertifikat
Binden Sie abschließend das SSL-Zertifikat an die Portnummer
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable