2011-09-02 160 views
0

当我添加项目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> 
+0

您是否添加了对您的服务接口的项目引用? – Tim

+0

interface =合同。请澄清你的问题,并提供一些代码示例。 –

回答

2

编辑contract="Project.ServiceModel.ITest"引用一个完全合格的域名(包括装配名称,而不是只有命名空间)。与contract="Project.ServiceModel.ITest, Project.ServiceModel"类似,假设您的项目名称为Project.ServiceModel,并且程序集名称设置为与项目名称相同(默认情况下通常是这样)。

也许这是一个错字,但你的mex地址看起来不正确。应该是http://localhost:8732/Test/mex。它仍然可能适用于你当前的配置,但你打破了惯例。

+0

当我使用WCF Servise Host Tool时,它显示错误“服务无法启动,该服务没有定义端点,请在配置文件中添加至少一个终端服务,然后重试。但正如你看到下面我有终点! ;/ – netmajor

+0

我解决了问题!我将behaviorConfiguration设置为端点,而不是服务! – netmajor

相关问题