当我向项目添加wcf服务时,我可以在Add Service Reference下看到它。 但是在将接口移动到另一个项目之后,但是相同的命名空间并在接口的合同中键入了正确的引用 - 我无法在Add Service Reference下看到我的服务。
为什么呢?我在配置文件中遗漏了什么?
Service Config文件应该在带有接口或合同的项目中吗?
修改。
第一个项目
using System.ServiceModel;
namespace Project.ServiceModel
{
[ServiceContract]
public interface ITest
{
[OperationContract]
void DoWork();
}
}
第二个项目
using Project.ServiceModel;
namespace Project.Service
{
public class Test : ITest
{
public void DoWork()
{
}
}
}
Test class项目中的配置
<system.serviceModel>
<services>
<service name="Project.Service.Test">
<endpoint address="http://localhost:8732/Test/" binding="wsHttpBinding"
contract="Project.ServiceModel.ITest">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/LMTService/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
答案 0 :(得分:2)
编辑contract="Project.ServiceModel.ITest"
以引用完全限定名称(包括程序集名称,而不仅仅是名称空间)。与contract="Project.ServiceModel.ITest, Project.ServiceModel"
类似,假设您的项目名称为Project.ServiceModel
,并且程序集名称设置为与项目名称相同(默认情况下通常是这样)。
也许这是一个错字,但你的mex地址看起来不正确。应该是http://localhost:8732/Test/mex
。它仍然可能适用于您当前的配置,但您违反惯例。