来自其他项目的合同而不是界面不可见
问题描述:
当我添加项目wcf服务时,我可以在添加服务参考下看到它。 但将接口移动到另一个项目后,但在接口的合同中输入了相同的名称空间和类型适当的引用后 - 我无法在“添加服务引用”下看到我的服务。来自其他项目的合同而不是界面不可见
为什么?我错过了配置文件中的东西?
服务配置文件应该在接口或合同项目中?
编辑。
第一个项目
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()
{
}
}
}
并且该配置在测试类项目
<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>
答
编辑contract="Project.ServiceModel.ITest"
引用一个完全合格的域名(包括装配名称,而不是只有命名空间)。与contract="Project.ServiceModel.ITest, Project.ServiceModel"
类似,假设您的项目名称为Project.ServiceModel
,并且程序集名称设置为与项目名称相同(默认情况下通常是这样)。
也许这是一个错字,但你的mex地址看起来不正确。应该是http://localhost:8732/Test/mex
。它仍然可能适用于你当前的配置,但你打破了惯例。
您是否添加了对您的服务接口的项目引用? – Tim
interface =合同。请澄清你的问题,并提供一些代码示例。 –