моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Поскольку клиенту необходимо обновить исходную серверную службу HTTP до службы, поддерживающей https, поскольку исходная служба HTTP реализована на основе встроенной службы прослушивания HTTP службы WINDOWS и не поддерживает https и не похожа на другие Веб-API, развернутые в IIS. Сертификат HTTPS загружается напрямую, как и служба, поэтому здесь вам необходимо изменить исходную службу для поддержки https и выполнить настройки привязки порта HTTPS в среде сервера следующим образом:
(Примечание. Для следующих операций требуется наличие сертификата HTTPS.)
1. Установите сертификат, дважды щелкните PFX-файл и установите его в: "локальный компьютер”–>“личный”;
2. Дважды щелкните, чтобы открыть.элтСертификат, вы можете увидеть (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 следующим образом:
Нажмите «ОК», и появится следующий интерфейс корневого узла консоли:
Выберите «Файл» -> «Добавить/удалить оснастку» или напрямую используйте сочетание клавиш Ctrl+M, чтобы открыть следующее всплывающее окно и выполнить операцию:
Затем перейдите к личному сертификату на ввоз
Наконец, привяжите сертификат SSL к номеру порта.
netsh http add sslcert ipport=0.0.0.0:8080 certhash=指纹 appid={程序GUID/newguid} clientcertnegotiation=enable