您的位置:首页 > 编程语言 > ASP

wcf服务库 在 asp.net iis5 和 windows服务中的托管 ,最简单快速的方法

2009-09-20 08:58 731 查看
环境 windowsxp vs2008 ,

第一

打开 vs2008 ,新建一个 wcf服务库 项目 ,vs 会自动生成一个类,用于测试。

wcf服务库建立完成

第二

在解决方案中添加 新建 windows服务 项目,

在“设计”窗口中点右键 单击添加安装程序

这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller,并且服务的属性值被复制到组件。

单击 ServiceInstaller 组件并将 StartType 属性设置为Automatic

将serviceProcessInstaller类的Account属性改为 LocalSystem

然后添加4个引用

system.configuration

system.configuration.install

system.runtime.serialization

system.servicemodel

再把第一步建立的wcf服务库项目引用进来,

在 Service1.cs 中 添加代码 结果如下

public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
ServiceHost s;
protected override void OnStart(string[] args)
{
s = new ServiceHost(typeof(WcfServiceLibrary1.Service1));
s.Open();
}

protected override void OnStop()
{
s.Close();
}
}

编译,不报错,

最后一步 把 wcf服务库项目 bin 文件夹 中的 config 文件 拷贝到 windows服务项目的bin 文件夹中并改名为 exe文件名+.config

例如 我的 windows服务项目 bin 中的exe文件名为 WindowsService1.exe,那么 config 文件名为 windowsService1.exe.config

测试 先安装windows服务 在 vs2008 命令行工具中 执行“installutil windowsService1.exe ”,安装成功后 ,在“管理工具-服务”中 启动 该服务, 再打开 config 文件 将 基址 url 复制 到 IE 中,看到说明 成功

到此 wcf服务库 在 windows服务中的托管 完成

第三

在解决方案中添加 新建 asp.net应用程序 项目,

把第一步建立的wcf服务库项目引用进来

复制wcf服务库项目 中app.config 配置信息

主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
<system.serviceModel>
<services>
<service behaviorConfiguration="WcfServiceLibrary1.Service1Behavior"
name="WcfServiceLibrary1.Service1">
<endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary1.IService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WcfServiceLibrary1.Service1Behavior">
<!-- 为避免泄漏元数据信息,
请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
<serviceMetadata httpGetEnabled="True"/>
<!-- 要接收故障异常详细信息以进行调试,
请将下值设置为 true。在部署前
设置为 false 以避免泄漏异常信息-->
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

可以将 <baseAddresses> 节点 删掉 无用, 还可以将 wsHttpBinding 改为 basicHttpBinding ,和 webservice 兼容

复制到 web.config 的 <configuration> 节点中,

然后 在 asp.net 项目 中添加 文本文件 文件名随便起,后缀必须为 svc 例如 s1.svc

在文件中添加

<%@ServiceHost language=c# Debug="true" Service="WcfServiceLibrary1.Service1"%>

注意:Service 后面 内容 要和 config 中 service 节点 name 一致 ,否则 找不到 服务,

测试 在ie 中 http://localhost:1055/s1.svc 看到说明 成功

到此 wcf服务库 在 asp.net iis 中的托管 完成

完整项目文件下载: http://download.csdn.net/source/1680096
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: