我收到此错误,我无法动摇。这个问题类似于this SO问题,还有很多其他问题,更不用说页面本身了。
是的,我完全认识到namespace
和service name
必须完全匹配。我现在读到了十亿倍的钞票。
我有一个WCF服务库,该库正在IIS中运行。该服务器是Windows Server 2016 Standard版。我将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
。
This question也很有趣。我本能地将App.config
重命名为Web.config
并重建了DLL。 IIS不会读取“ App.config”。
有想法吗?
答案 0 :(得分:0)
最后引用的文章指出了问题,我的怀疑是正确的。我在写的很好时就把这个问题留在这里,但更重要的是,没有说明重要的事实。
Visual Studio
或C#
都没有嵌入Web.config,或者IIS没有从DLL中提取文件。我读过的所有谈话文章都说要编写一个SVC文件,将DLL放入bin文件中,但都忽略了两个关键信息。
将App.config
复制到“ Web.config”。
将Web.config
的副本与SVC文件放在同一文件夹中。
无需刷新IIS中的网站,但必须刷新浏览器页面。
我希望这个答案对某人有所帮助,因为我确实受了苦,几乎没有得到。