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

时间:2011-09-24 20:23:25

标签: c# .net wcf

我是wcf的新手。我已经制作了简单的自托管服务并添加了app.config但是当我在浏览器中键入地址时,它没有向我显示我们在创建服务时获得的服务页面http://localhost:8067/WCFService它没有将服务显示为它显示我们何时运行服务。但是,当我尝试在public static void main而不是app.config中添加基本服务时,它工作正常,我没有得到?有人可以帮帮我吗?

以下是手动添加的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 :(得分:1)

您还需要将元端点添加到自托管服务...

ServiceMetadataBehavior meta = new ServiceMetadataBehavior();
      meta.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
      _host.Description.Behaviors.Add(meta);

      _host.AddServiceEndpoint(
        ServiceMetadataBehavior.MexContractName,
        MetadataExchangeBindings.CreateMexHttpBinding(),
        "http://localhost:8067/WCFService/mex"
      );