Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Porque el cliente necesita actualizar el servicio back-end HTTP original a un servicio que admita https, porque el servicio HTTP original se implementa en función del servicio de escucha HTTP integrado del servicio WINDOWS y no admite https, ni tampoco Al igual que otras WebAPI implementadas en IIS, el certificado HTTPS se carga directamente como el servicio, por lo que aquí debe modificar el servicio original para admitir https y realizar la configuración de enlace del puerto HTTPS en el entorno del servidor, de la siguiente manera:
(Nota: las siguientes operaciones requieren que ya tenga un certificado HTTPS).
1. Instale el certificado, haga doble clic en el archivo pfx e instálelo en: "computadora local”–>“personal”;
2. Haga doble clic para abrirCráneoCertificado, puede ver (certhash) información relacionada con las huellas dactilares en la información detallada;
3. Realice el enlace de puerto (puerto predeterminado 443)
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable
4. Implementación del programa del servidor:
- 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 se informa un error durante el proceso de vinculación de puertos anterior, o la adición falla, puede consultar el siguiente procesamiento:
1. Compruebe si los parámetros del comando netsh son correctos;
2. Error al agregar el certificado SSL, error: 1312 La sesión de inicio de sesión especificada no existe. Es posible que haya sido cancelado. Método de procesamiento:
Teclado WIN+R e ingrese mmc.exe, de la siguiente manera:
Haga clic en "Aceptar" y aparecerá la siguiente interfaz del nodo raíz de la consola:
Seleccione Archivo->Agregar/Eliminar complemento, o use directamente la tecla de método abreviado ctrl+m para que aparezca la siguiente ventana emergente y realice la operación:
Luego vaya al certificado personal de importación.
Finalmente vincule el certificado SSL al número de puerto
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable