Я получаю эту ошибку и не могу ее избавиться. Этот вопрос похож на вопрос это ТАК и многие другие, не говоря уже о самой странице.
Да, я полностью осознаю, что namespace
и service name
ДОЛЖНЫ ТОЧНО СООТВЕТСТВОВАТЬ. Я прочитал это в миллиард раз.
У меня есть библиотека службы WCF, которую я использую в IIS. Сервер представляет собой стандартный выпуск Windows Server 2016. Я переименовал App.config
в Web.config
, хотя пробовал как App.config
. Я пробовал, кажется, миллион конфигураций каждой и все та же ошибка. Да, пробовал добавить привязку и указать basicHttpBinding
.
Web.Config
<?xml version = "1.0" encoding = "utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name = "MyTesterLibrary.MyTester" behaviorConfiguration = "MetadataBehavior">
<endpoint address = "" binding = "wsHttpBinding" contract = "MyTesterLibrary.IMyTester" />
<endpoint address = "mex" binding = "mexHttpBinding" contract = "IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name = "MetadataBehavior">
<serviceMetadata httpGetEnabled = "True"/>
<serviceDebug includeExceptionDetailInFaults = "True" httpHelpPageEnabled = "True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Основной класс
namespace MyTesterLibrary
{
public class MyTester : IMyTester
{
public string GetVersionInfo()
{
Backup.GetVersionInfo(out string response);
return response;
}
}
}
Класс интерфейса
namespace MyTesterLibrary
{
[ServiceContract]
public interface IMyTester
{
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/GetVersionInfo")]
[OperationContract]
string GetVersionInfo();
}
}
ProductServiceHost.svc
<%@ ServiceHost Service = "MyTesterLibrary.MyTester" %>
Я следовал инструкциям на другом сайте и создал сайт IIS. На этом скриншоте все сказано.
Я знаю, что в упомянутой статье SO этот парень настаивал на том, что проблема была в IIS, а это не так, но моя проблема определенно кажется такой. Я просто снова попробовал basicHttpBinding
и то же самое.
Этот вопрос на форуме asp.net тоже был интересен. Я инстинктивно переименовал App.config
в Web.config
и перестроил DLL. IIS не читает `App.config '.
Мысли?
В последней упомянутой статье говорилось о проблеме, и мои подозрения были правильными. Я оставляю этот вопрос здесь, поскольку я хорошо его написал, но, что более важно, ВАЖНЫЙ факт не был заявлен.
Visual Studio
или C#
не встраивают Web.config ИЛИ IIS не извлекает файл из библиотеки DLL. Во всех статьях, которые я читал, говорится, что нужно написать файл SVC, поместить DLL в файл bin, но все они не учитывают два важных элемента информации.
Скопируйте App.config
в `Web.config '.
Поместите копию Web.config
в ту же папку, что и файл SVC.
Нет необходимости обновлять веб-сайт в IIS, но необходимо обновить страницу браузера.
Надеюсь, что этот ответ кому-то поможет, так как очень пострадал и почти не понял.