WCF浅尝

1.首先先建立一个WCF服务应用程序

2.再建立一个宿主程序,这里用控制台,添加服务引用,这里会报错:

点击页面确定,回到添加服务页面

点击箭头有如下内容:

这里告诉我们问题的所在,我们只要重新生成解决方案就行了。

好,重新生成解决方案,ok,问题解决,添加引用服务成功。

 3.在控制台程序里启动服务:

 static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(typeof(WcfService2.Service1)))
            {
                host.Opened += (a, b) => { Console.WriteLine("service is opened"); };
                host.Open();
                Console.Read();            }
        }

这里先把控制台程序设为启动项目

4.运行程序,报错:“服务“WcfService1.Service1”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点”。

这个问题是宿主的配置文件出现问题,如果宿主是控制台,请修改app.config 配置:代码如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.serviceModel>
    <services>
      <service name="WcfService2.Service1" behaviorConfiguration="MessageBehavior" >
        <host>
          <baseAddresses >
            <add baseAddress="http://localhost:13563/WcfService2"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" contract="WcfService2.IService1"></endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="MessageBehavior">
          <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

5.好问题解决,但是又出现新的问题:HTTP 无法注册 URL http://+:13563/WcfService2/。进程不具有此命名空间的访问权限(有关详细信息,请参见 http://go.microsoft.com/fwlink/?LinkId=70353)。

这个问题主要是win7或者win8系统权限问题,点击vs启动程序,右键点“以管理员身份”运行程序即可解决

6.关闭VS2010,以管理员身份运行

好,终于成功了

7.调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;

namespace WcfService1
{
    class Program
    {
        static void Main(string[] args)
        {
            ConsoleApplication1.ServiceReference1.Service1Client wcfClient = new ConsoleApplication1.ServiceReference1.Service1Client();

            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();

            watch.Start();
            Console.WriteLine(  wcfClient.GetData(10));

            watch.Stop();
            Console.WriteLine("耗时:" + watch.ElapsedMilliseconds);
            Console.ReadKey();
        }
    }
}

结果:

 终于成功了,我因为是初学,所有才会出现这么多问题,希望能帮到和我一样的初学者,如果那个高手有简便后者快捷的方法,可以告诉我,我这方法太笨了。期待你的指点。

时间: 2024-10-11 16:13:42

WCF浅尝的相关文章

浅尝异步IO

关于异步IO 记得几年前使用MFC编程的时候,曾经使用过windows的异步socket. 当在socket句柄上设置好关心的事件(如,可读.可写)后,如果事件发生,则指定的窗口会收到一个指定的消息. int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent); 然后窗口例程取得消息,对socket进行处理(如,recv.send). linux也支持类似的异步IO(不局限于socket),如果事件发生,指定的进

浅尝批处理系统

背景 Google发表了MapReduce计算范型及其框架的论文.MapReduce和并行数据库系统(MPP)各有优劣并且两者有一定的互补和学习.与传统MPP架构相比,MapReduce更适合非结构化数据的ETL处理类操作,并且可扩展性和容错性占优,但是单机处理效率较低. DAG计算模型是MapReduce计算机制的一种扩展.MapReduce对于子任务之间复杂的交互和依赖关系缺乏表达能力,DAG计算模型可以表达复杂的并发任务之间的依赖关系. Spark本质上是DAG批处理系统,其最能发挥特长的

浅尝数据库并发控制

        数据库是一个共享资源,可以供多个用户使用.然而,对于大多数程序员来说,单处理机系统是我们接触最多的系统,运行在其上的数据库事务也并非真正意义上的并行,实际上它是这些并行事务的并行操作轮流交叉运行,这种并行执行方式称为交叉并发方式(Interleaved Concurrency),这样可以减少处理机的空闲时间,提高系统的效率.而在多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现真正意义上的并行运行,而这种并行执行方式,我们称之为同时并行方式(Simu

浅尝Silverlight2.0的美味

问题描述 Silverlight2.0的发布了,迫不及待安装完,感受一下新版的出彩.安装成功安装完Silverlight2之后,首先打开VS2008,打开新建项目对话框,可以看到ProjectTypes的树下出现一个Silverlight,Templates中选择SilverlightApplication项目模板.当然,相应的我们需要指定ProjectName和ProjectLocation.创建Application接着我们会看到弹出的对话框,这里我们可以选择创建一个ASP.NETWebSi

Struts Validation框架浅尝2

javascript 支持       在web应用中,使用javascript的机会非常多.虽然不少书上提及客户有可能从浏览器关闭js的执行,但是要想完全的不使用它,目前看来好像还不行.比如一些复杂的UI是必须通过js来实现的(如下拉式菜单等等).那么validation框架支不支持客户端的js验证呢?答案是:当然.具体做法是: -          在页面html:form标签内部添加onsubmit="return validateEditForm(this);"(具体的语法:v

浅谈TypeScript

  TypeScript为JavaScript的超集(ECMAScript6), 这个语言添加了基于类的面向对象编程.TypeScript作为JavaScript很大的一个语法糖,本质上是类似于css的less.sass,都是为了易于维护.开发,最后还是编译成JavaScript.趁着周末的时间,浅尝了Typescript,下面是总结的一些特性.   Types 所有类型都是any类型的子类型,其他类型被分成元类型(primitive types)和对象类型(object types). 1.

手把手教你在ASP中使用SQL语句

sql|语句 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了.但你要同时采用ASP和SQL的话就可能会头晕.MySQL.SQL Server和mSQL都是绝佳的SQL工具,可惜,在ASP的环境下你却用不着它们来创建实用的SQL语句.不过,你可以利用自己掌握的Access知识以及相应的Access技能,再加上我们的提示和技巧,相信一定能成功地在你的ASP网页中加入SQL. 1. SELECT 语句 在SQL的世界里,最最基础的操作就是SELECT 语句了.在数据库工具下直接采用

ASP初学者:教你使用使用SQL语句

sql|初学|语句 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了.但你要同时采用ASP和SQL的话就可能会头晕.MySQL.SQL Server和mSQL都是绝佳的SQL工具,可惜,在ASP的环境下你却用不着它们来创建实用的SQL语句.不过,你可以利用自己掌握的Access知识以及相应的Access技能,再加上我们的提示和技巧,相信一定能成功地在你的ASP网页中加入SQL. 1. SELECT 语句 在SQL的世界里,最最基础的操作就是SELECT 语句了.在数据库工具下直

linux异步IO浅析

知道异步IO已经很久了,但是直到最近,才真正用它来解决一下实际问题(在一个CPU密集型的应用中,有一些需要处理的数据可能放在磁盘上.预先知道这些数据的位置,所以预先发起异步IO读请求.等到真正需要用到这些数据的时候,再等待异步IO完成.使用了异步IO,在发起IO请求到实际使用数据这段时间内,程序还可以继续做其他事情). 假此机会,也顺便研究了一下linux下的异步IO的实现. linux下主要有两套异步IO,一套是由glibc实现的(以下称之为glibc版本).一套是由linux内核实现,并由l