2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Parce que le client doit mettre à niveau le service backend HTTP d'origine vers un service prenant en charge https, car le service HTTP d'origine est implémenté sur la base du service d'écoute HTTP intégré du service WINDOWS et ne prend pas en charge https, ni comme les autres WebAPI déployées dans IIS Le certificat HTTPS est chargé directement comme le service, vous devez donc ici modifier le service d'origine pour prendre en charge https et effectuer les paramètres de liaison de port HTTPS sur l'environnement du serveur, comme suit :
(Remarque : les opérations suivantes nécessitent que vous disposiez déjà d'un certificat HTTPS.)
1. Installez le certificat, double-cliquez sur le fichier pfx et installez-le sur : "ordinateur local”–>“personnel”;
2. Double-cliquez pour ouvrircrtCertificat, vous pouvez voir (certhash) les informations relatives aux empreintes digitales dans les informations détaillées ;
3. Effectuez la liaison de port (port par défaut 443)
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable
4. Implémentation du programme serveur :
- 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();
- }
- }
Si une erreur est signalée lors du processus de liaison de port ci-dessus, ou si l'ajout échoue, vous pouvez vous référer au traitement suivant :
1. Vérifiez si les paramètres de la commande netsh sont corrects ;
2. Échec de l'ajout du certificat SSL, erreur : 1312 La session de connexion spécifiée n'existe pas. Il a peut-être été interrompu. Méthode de traitement:
Tapez WIN+R et entrez mmc.exe, comme suit :
Cliquez sur « OK » et l'interface du nœud racine de la console suivante apparaîtra :
Sélectionnez Fichier->Ajouter/Supprimer un composant logiciel enfichable ou utilisez directement la touche de raccourci ctrl+m pour faire apparaître la fenêtre contextuelle suivante et effectuer l'opération :
Rendez-vous ensuite sur le certificat personnel d'importation
Enfin, liez le certificat SSL au numéro de port
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable