我在浏览器中输入网址时,自托管的WCF服务无法正常工作?

时间:2011-09-24 21:05:18

标签: wcf c#-3.0

我是WCF的新手。我已经创建了一个简单的自托管服务并添加了app.config但是当我在浏览器中输入地址时,它没有向我显示我们在创建服务时获得的服务页面http://localhost:8067/WCFService它没有显示服务因为它显示我们运行服务时。

但是当我尝试在public static void main而不是app.config中添加基本服务时,它可以正常工作,但是没有得到yy?有人可以帮帮我吗?

以下是手动添加的app.config文件:

<configuration>     
   <system.serviceModel>     
      <services>     
         <service name="SelfHostedWCFService.WCFService">     
            <endpoint
                address="http://localhost:8067/WCFService"
                binding="wsHttpBinding"
                contract="SelfHostedWCFService.IWCFService">     
            </endpoint>     
         </service>     
      </services>     
   </system.serviceModel>     
</configuration> 

以下是Program.cs

static void Main(string[] args)     
{     
    ServiceHost host = new ServiceHost(typeof(SelfHostedWCFService.WCFService));
    host.Open();     
    Console.WriteLine("Server is Running...............");      
    Console.ReadLine();
}

以下是手动添加的界面文件:

namespace SelfHostedWCFService     
{      
    [ServiceContract]     
    interface IWCFService      
    {     
        [OperationContract]     
        int Add(int a, int b);      
        [OperationContract]     
        int Sub(int a, int b);      
        [OperationContract]     
        int Mul(int a, int b);
    }     
} 

以下是手动添加的service.cs文件:

namespace SelfHostedWCFService
{     
    class WCFService:IWCFService     
    {     
         public int Add(int a, int b) { return (a + b); }      
         public int Sub(int a, int b) { return (a - b); }      
         public int Mul(int a, int b) { return (a * b); } 
    }     
} 

我的app.config或其他一些概念有问题吗?

1 个答案:

答案 0 :(得分:2)

乍一看似乎一切正常 - 你肯定服务没有运行?

如果没有发布任何元数据,您无法使用WCF Test Client测试服务,也无法为其生成客户端代理....

所以我建议将服务元数据发布添加到您的服务中,这样做,我能够测试您的代码,并且它可以完美地运行。

要添加元数据,请将配置更改为:

<configuration>     
   <system.serviceModel>     
      <behaviors>
          <serviceBehaviors>
             <behavior name="Metadata">
                <serviceMetadata />
             </behavior>
          </serviceBehaviors>
      </behaviors>
      <services>     
         <service name="SelfHostedWCFService.WCFService" behaviorConfiguration="Metadata">     
            <endpoint
                address="http://localhost:8067/WCFService"
                binding="wsHttpBinding"
                contract="SelfHostedWCFService.IWCFService" />     
            <endpoint address="http://localhost:8067/WCFService/mex"
                      binding="mexHttpBinding" contract="IMetadataExchange" />     
         </service>     
      </services>     
   </system.serviceModel>     
</configuration> 

即使使用此配置,导航到网址时也不会看到任何服务页面 - 但服务已启动并正在运行 - 只需使用WCF Test Client并自行查看!