Первый кредит, при котором требуется кредит, многие из проблем, на которые я указал в правильном направлении несколькими пользователями SO, можно назвать следующие: Микаэль Болиндер , Авраам Цянь , Лекс Ли , замечательные люди в C # чате и мой коллега (У меня нет учетной записи на SO на момент написания этого ответа), В этом ответе я планируем охватить все, что вам может понадобиться для размещения библиотеки WCF в IIS Server с использованием безопасности HTTPS.
Инструменты, которые я использовал:
- Visual Studio 2017, профессиональный
- IIS 10 (поставляется с Windows 10, но должен быть активирован в функциях Windows) (см. Ниже)
Во-первых:
Убедитесь, что у вас установлены все необходимые компоненты Visual Studio.
- Windows -> .Net Desktop Development
- Windows -> Универсальная платформа Windows для разработки
- Web & Cloud -> ASP.NET и веб-разработка
В этот и другие списки, которые будут добавлены, могут быть включены некоторые дополнительные компоненты, причина в том, что я установил их и не смог проверить, так или иначе, если они абсолютно необходимы.
Теперь давайте добавим необходимые функции Windows. Панель управления -> Программы -> Включение или отключение функций Windows
Обязательно зайдите в Службы WCF и проверьте Активацию HTTP, не обманывайте себя квадратным блоком (Одна из моих ошибок)
Теперь давайте приступим к созданию Сервиса. Откройте Visual Studio Файл -> Создать -> Проект -> Visual C # -> Веб -> WCF -> Библиотека служб WCF . При этом создается MCVE, который вы пытаетесь разместить
Теперь вам нужно связать его с веб-сайтом, чтобы сгенерировать файл Web.Config вместе с файлом SVC, для этого в обозревателе решений щелкните правой кнопкой мыши свое решение, Добавить-> Новый веб-сайт .
Теперь в файле web.config добавьте
<system.serviceModel>
<services>
<service name="WcfServiceLibrary4.Service1"> <!-- Change the library name as per your need -->
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="secureHttpBinding"
contract="WcfServiceLibrary4.IService1"/> <!-- Change the library name as per your need -->
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Далее добавьте ссылку на сервис на сайте
Откройте сервисы и добавьте сервис, который вы создали. Теперь создайте свое решение и опубликуйте его. ** Осторожно Не публикуйте решение в пользовательском каталоге, таком как рабочий стол или документы, иначе права доступа ACL вызовут головную боль, а скорее опубликуйте его непосредственно в каталоге на диске.
Сейчас время хостинга
Сначала давайте откроем IIS (Всегда как администратор) и создадим новый сертификат.
На сервере перейдите к части IIS и выберите «Сертификаты сервера», затем нажмите «Создать новый сертификат» справа.
Теперь создайте новый сайт из левого меню
Обязательно переключитесь на https и выберите здесь свой сертификат. Теперь, чтобы убедиться, что ваша служба создана, вам нужно будет просмотреть созданный файл SVC для веб-сайтов. К сожалению, в этот момент вы получите сообщение об ошибке Server Error in '/' Application.
Could not find a base address that matches scheme http for the endpoint with binding BasicHttpBinding. Registered base address schemes are [https].
Я не смог чтобы найти причину ошибки, но я смог найти ее,
Действия по обходу этой ошибки -> Выберите свой веб-сайт в меню слева, в меню привязок правой кнопки мыши, а также добавьте привязку HTTP с другим портом.
После этого вы сможете просмотреть HTTPS-версию вашего файла SVC.
Теперь, если вы перейдете по ссылке HTTPS, вы получите сообщение о создании службы
Теперь вы можете пойти дальше и создать приложение, которое использует этот сервис.
Что ждет впереди
- Я попытаюсь найти способ сделать это без добавления дополнительной привязки
- Второй целью было бы добиться этого без добавления дополнительного веб-сайта.
Если и когда я достигну этого, я буду обновлять, однако это не мой приоритет сейчас и может не добавляться в течение долгого времени, если что-то не имеет смысла, или у вас есть какие-либо идеи по улучшению комментария ниже.