在本文中,我们将会在local development fabric上创建一个WCF服务角色,然后在一个控制台应用程序中使用它。

WCF服务角色可以让我们创建一个WCF服务,并且把它托管在Windows Azure中。在本文中,我们将会创建一个WCF服务角色,把它托管在local development fabric上,然后在一个控制台应用程序中使用它。在下一篇文章中,我们将会把这个WCF服务迁移到Azure门户中。

首先

1,创建一个新项目

2,导航到“Cloud”标签

3,创建Windows Azure项目

4,在给出的选项中选择WCF服务角色

如果你看一下解决方案资源管理器,你会发现这个WCF服务角色项目的结构和文件与正常创建的WCF服务应用程序完全相同。它包含:

1,IService1.cs(服务契约)

2,Service1.svc.cs(服务定义)

3,Web.config(EndPoint的配置)

我们可以按照我们的需求来修改这些文件,这和我们平时在一个WCF服务应用程序中做的事情没有什么两样。

让我们来修改服务契约:

IService1.svc

using System.ServiceModel;
 
namespace WCFServiceWebRole1

{

[ServiceContract]

public interface IService1

{
 
        [OperationContract]

string GetData(int value);
     
    }

}

然后,修改服务定义:

Service1.svc.cs

namespace WCFServiceWebRole1

{

public class Service1 : IService1

{

public string GetData(int value)

{

return string.Format("You entered: {0}", value);

}
 
    }

}

在Web.Config中保留默认的配置。

确保你已经把Windows Azure项目设置成启动项目了,然后运行这个应用程序。在浏览器中,你会得到如下错误信息:

忽略这个错误信息,然后把一个URL添加到“Service1.svc”中,这个URL应该是http://127.0.0.1:81/Service1.svc。“Service1.svc”是服务定义的名字。添加以后,你会在浏览器中得到通常的WCF服务消息

要在一个控制台客户端中测试这个WCF服务角色,需要:

1,创建一个控制台应用程序项目

2,使用指定的URL(http://127.0.0.1:81/Service1.svc)来添加服务引用

现在,我们编写一个正常的服务调用:

Program.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using ConsoleApplication14.ServiceReference1;

namespace ConsoleApplication14

{

class Program

{

static void Main(string[] args)

{

Service1Client proxy = new Service1Client();

var result = proxy.GetData(99);

Console.WriteLine(result);

Console.ReadKey(true);

}

}

}

现在,当你运行这个应用程序的时候,你也许会得到下面这个异常:

要解决上面这个异常,我们必须要编辑“App.Config”文件。我们需要修改这个配置文件:

“127.0.0.1”代表“localhost”。也许这个控制台应用程序不能解析“127.0.0.1”,所以,我们把它改成“localhost”:

现在,运行这个应用程序,我们会得到如下输出:

这里,我们需要注意的一个行为是,有时,在把“127.0.0.1”改成“localhost”以后,你可能还是会得到那个超时异常。在我以后的文章中,我会深入研究一下这个意料之外的行为。

原文名:Windows Azure for Developers Task 8: Working with WCF Service Web Role 作者: Dhananjay Kumar

最新文章

  1. 三、基于hadoop的nginx访问日志分析--计算时刻pv
  2. ExtJS 刷新或者重载Tree后,默认选中刷新前最后一次选中的节点代码片段
  3. 在java中使用正则表达式注意的地方
  4. Objective-C编码规范
  5. Linux命令行文本处理工具
  6. 基于visual Studio2013解决C语言竞赛题之1029二元数组平均值
  7. 基于visual Studio2013解决面试题之0402合并升序链表并去重
  8. OWIN编写中间件
  9. Python自学笔记——Matplotlib风羽自定义
  10. 近期用过的Linux口令备份
  11. Linux下简单的取点阵字模程序
  12. cookie存储中文
  13. cocos2d-x 游戏开发之有限状态机(FSM) (四)
  14. Android为TV端助力 Service 两种启动方式的区别
  15. Push notification - Caused by java.io.IOException toDerInputStream rejects tag
  16. Base64编码加密
  17. solr联合多个字段进行检索(multivalued和copyfield的使用)
  18. 【scrapy】使用方法概要(二)(转)
  19. Hive查看执行日志
  20. jQuery开发插件的两种方式

热门文章

  1. brew 出现 git 错误的问题分析
  2. IT部门能力评估...
  3. android studio 中查找代码中的硬编码
  4. 解决mac os x下 tomcat启动报 java.net.BindException: Permission denied <null>:80 错误
  5. Multipart/form-data POST文件上传详解
  6. Python 中的进程、线程、协程、同步、异步、回调
  7. NSString Byte NSData 字节(字符)字符串
  8. 阿里云ubuntu环境笔记
  9. 修改mysql默认字符集的方法
  10. AjaxControlToolKit--TabContainer控件的介绍