首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

请问一个wcf服务添加失败的有关问题

2013-06-25 
请教一个wcf服务添加失败的问题。我创建了一个服务,这个服务有四个终结点。配置如下 :?xml version1.0 e

请教一个wcf服务添加失败的问题。
我创建了一个服务,这个服务有四个终结点。配置如下 :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Service.Calculator" behaviorConfiguration="servicebehavior">
        <endpoint address="mex" binding="wsHttpBinding" contract="Service.ICalculator"></endpoint>
        <endpoint address="mex" binding="netTcpBinding" contract="Service.ICalculator"></endpoint>
        <endpoint address="http://localhost:8000/test" binding="wsHttpBinding" contract="Service.ICalculator"></endpoint>
        <endpoint address="net.tcp://localhost:8001/test" binding="netTcpBinding" contract="Service.ICalculator"></endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8002/"/>
            <add baseAddress="net.tcp://localhost:8003"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="servicebehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

然后启动服务
 using (ServiceHost host = new ServiceHost(typeof(Service.Calculator)))
            {
                host.Opened += delegate
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("服务已经开启!{0}",host.State);
                    Console.Read();
                };

                host.Open();
            }

我在一个控制台项目中添加服务引用,提示如下:
下载“http://localhost:8000/test”时出错。
请求因 HTTP 状态 400 失败: Bad Request。
元数据包含无法解析的引用:“http://localhost:8000/test”。
元数据包含无法解析的引用:“http://localhost:8000/test”。
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。

但是使用编程的方式调用却可以。


  

static void Main(string[] args)
        {
            EndpointAddress address = new EndpointAddress(new Uri("http://localhost:8000/test"));

            ServiceEndpoint endpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(Service.ICalculator)), new WSHttpBinding(), address);

            using (ChannelFactory<Service.ICalculator> client = new ChannelFactory<Service.ICalculator>(endpoint))
            {
                Service.ICalculator myobject = client.CreateChannel();
                Console.WriteLine(myobject.Add(1, 2.2));
                Console.Read();
            }
        }

能正确返回结果3.2,请问大家要怎么解决呢?
[解决办法]
http://localhost:8000/test  这个地址url能直接访问么
[解决办法]
后面需要添加对应的*.svc指定Service吧?
[解决办法]
引用:
后面需要添加对应的*.svc指定Service吧?

++
[解决办法]
晕死了,你执行完 .Open()之后就把它关闭吗?

不要使用Using{}。
[解决办法]

<endpoint address="mex" binding="wsHttpBinding" contract="Service.ICalculator"></endpoint>

好像有点画蛇添足的味道。
[解决办法]
很好,WCF全面解析。
[解决办法]
接口中添加了服务契约属性吗?
[ServiceContract]

热点排行