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
第一
打开 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
相关文章推荐
- asp.net web api的自托管模式HttpSelfHostServer可以以控制台程序或windows服务程序为宿主,不单单依赖于IIS web服务器
- ASP.NET 中通过Form身份验证 来模拟Windows 域服务身份验证的方法
- Windows 7 系统中开启 ASP.NET State Service 服务的方法
- Windows 7 系统中开启 ASP.NET State Service 服务的方法
- 如何与 ASP.NET 并行承载 Windows Communication Foundation (WCF) 服务以及在 ASP.NET 兼容模式中承载它们
- 利用JQuery直接调用asp.net后台的简单方法
- 一起谈.NET技术,JavaScript 调用 ASP.NET WebService 的简单方法
- 增加asp.net应用程序性能的20种方法(简单有效)
- asp.net用类似操纵Sql语句的方式快速实现Excel读写的方法(oleDB 方式)
- Asp.Net读取服务器EXE文件的方法!(超简单实例)
- MattPowell介绍了如何在服务器端使用异步Web方法,来创建高性能的 Microsoft ASP.NET Web 服务
- Asp.net core利用IIS在windows上进行托管步骤详解
- asp.net 最简单的更换皮肤的方法
- ASP.net中导出Excel的简单方法
- ASP.NET C# 生成静态页面简单方法
- Asp.Net使用POST方法最简单的实现
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。 - CatcherX
- ASP.NET服务开启后Session丢失的解决方法