最近由于项目需求,要做一个上传文件附件的功能,由于是多用户访问,所以这就用到了WCF服务,程序编写完成就需要发布了,

下面记录下发布到IIS的过程:

1,安装IIS

第一步:检查Windows7中IIS是否安装了必要的组件

方法:控制面板->程序和功能->打开或关闭Windows功能

以下图片中标注的功能Windows7默认不会安装的

第二步:检查IIS的配置

系统必备安装完成后打开IIS服务管理器,点默认网站,双击“处理程序映射”如下图

检查一下下图中红色标注部分是否已经存在,否则WCF服务是无法调用的。不幸如果没有找到这几个"兄弟"的话方法如下

安装注册WCF组件

1)运行cmd命令行工具。(开始 ==> 运行 ==> cmd回车)
(注意!!如果使用Windows Vista或7的话,务必使用administrator管理员身份运行,否则可能导致下面的操作无法继续!)

2)进入WCF文件夹:
cd C:\WINDOWS\Microsoft.NET\Framework\v3
.0\Windows Communication Foundation

3)运行ServiceModelReg.exe工具,会得到如下帮助信息:

C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>Service
ModelReg

Microsoft(R) Windows Communication Foundation 安装实用程序
[Microsoft (R) Windows (R) Communication Foundation, 版本 3.0.4506.2152]
版权所有 (c) Microsoft Corporation。保留所有权利。

管理一台计算机上的 Windows Communication Foundation
的安装和卸载的管理实用程序
=================
用法:
   ServiceModelReg.exe [-i[r | ru] | -u | -ua | -r | -s:<path> | -sn:<path>
   | -k:<path> | -kn:<path> | -lv | -lk | -vi] [-y] [-x] [-q | -v] [-nologo]
   [-?]
-i         - 安装此版本的 Windows Communication Foundation,并更新
             IIS 元数据库根处的脚本映射和根以下的所有脚本映射。
             现有的较低版本的脚本映射会升级至此版本。

-ir        - 安装此版本的 Windows Communication Foundation,
             仅注册。不要在 IIS 中安装 Windows Communication Foundation
             脚本映射。
-iru       - 安装此版本的 Windows Communication Foundation。如果
             存在使用 Windows Communication Foundation 的任何现有
             应用程序,不要在 IIS 中更新它们的脚本映射。
-u         - 卸载此版本的 Windows Communication Foundation。
             将此版本现有脚本映射会重新映射到计算机上剩余的
             已安装的最高版本的 Windows Communication Foundation。

-ua        - 卸载计算机上所有版本的 Windows Communication Foundation。

-r         - 重新安装此版本的 Windows Communication Foundation,
             并更新 IIS 元数据库根处的脚本映射和根以下的所有
             脚本映射。无论原始版本是什么,都将现有的脚本映射
             升级到此版本。
-x         - 包含作为该安装操作一部分的 Windows Communication
             Foundation 自定义操作脚本。
-s:<path> - 在指定的路径以非递归方式安装此版本
             的 Windows Communication Foundation。
             例如,ServiceModelReg.exe -s:W3SVC/1/ROOT/SampleApp1
-sn:<path> - 在指定的路径以非递归方式安装
             此版本的 Windows Communication Foundation。
-k:<path> - 从指定的路径中以递归方式删除所有版本的 Windows
             Communication Foundation 的所有脚本映射。
             例如,ServiceModelReg.exe -k:W3SVC/1/ROOT/SampleApp1
-kn:<path> - 从指定的路径中以非递归方式删除 Windows Communication
             Foundation 的所有版本的所有脚本映射。
-lv        - 列出在该计算机上安装的所有版本的 Windows Communication
             Foundation,以及状态和安装路径。
-lk        - 列出对 Windows Communication Foundation 进行脚本映射
             的位置的所有 IIS 元数据库密钥,以及该版本。将不会
             显示从父密钥继承 Windows Communication Foundation
             脚本映射的密钥。
-vi        - 确认目标组件的安装并生成报告。组件可以处于下列状态:
              未知、未安装、已进行默认安装或已进行自定义安装。

-y         - 在卸载或重新安装组件之前不要求确认。

-q         - 安静模式(减少输出信息)。
-v         - 详细模式。
-nologo    - 取消版权和标题消息。
-?         - 打印此帮助文本。
=================
4)注册WCF组件,执行:ServiceModelReg.exe -i 回车

如果出现下面的信息,说明注册成功了:
=================
C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>Service
ModelReg -i
Microsoft(R) Windows Communication Foundation 安装实用程序
[Microsoft (R) Windows (R) Communication Foundation, 版本 3.0.4506.2152]
版权所有 (c) Microsoft Corporation。保留所有权利。

正在安装: Machine.config 节组和处理程序
正在安装: System.Web 生成提供程序
正在安装: System.Web 编译程序集
正在安装: HTTP 处理程序
正在安装: HTTP 模块
正在安装: Web 主机脚本映射

安装完成后打开IIS

2,WCF服务的构建

说明:一般情况下,我们编写程序时,服务和程序是放在一个解决方案里的,但是发布时,要将服务代码上传到服务器,不能把那么大的文件都传上去,所以我就重现构建了个WCF服务,不知这里说的对不对

创建过程:

1)文件-->新建-->项目-->Web-->WCF服务应用程序-->编辑名称-->确定

2)结果如下:

   删除系统生成的两个文件IService1.cs与Service1.svc和Web.config文件,将我们当初嵌入到项目中的服务文件粘贴到这里来,包含到项目中。

3,IIS绑定WCF服务

4,疑难杂症:

由于我的服务需要连接SQLServer数据库,就出现下面的问题:

本问题的特征是:数据库是SQL Server Express、程序在VS中调试成功,但是在在IIS中产生类似如下的问题 
------------------------------------------------ 
无法打开登录所请求的数据库 "dbName"。登录失败。 
用户 'IIS APPPOOL\DefaultAppPool' 登录失败。

解决方案

【1】IIS中:

1、先查看你的网站使用的是哪个应用程序池

2、基本设置-->选择.net framework v4.0

3、设置应用程序池的选项

应用程序池->对应的程序池上右键->高级设置->进程模块_标识->选择NetworkService(与数据库中设置统一)。

【2】数据库:
打开sql server 2005(2008) management studio
安全性->登录名->右击新建登录名->常规->搜索->添加SERVICE用户->服务器角色->勾上sysadmin
一般已存在,勾上sysadmin即可。

5,将WCF服务设置成指向IIS(对应程序)

然后通过在浏览其中输入网址,检验服务是否配置成功。

6,最后就是在实际项目中添加服务引用了

右键添加服务引用,将上面5中的项目URL网址粘贴到其中,点击前往,编辑命名空间,确定即可。

对于一些情况还需要进行高级设置,将集合类型调整下,从Array调整为List,要看具体情况

说明:步骤5,6这样做的好处,可以分别进行调试,可能是由于访问URL的一致吧,使两者关联,具体我也说不太清楚。

以上是给自己日后再次出现这些问题做的总结,也希望对看到的人儿有帮助。

注:参考文章1,http://www.jb51.net/article/41898.htm;2,http://www.cnblogs.com/chsword/archive/2009/09/05/1561067.html;3,http://blog.csdn.net/findsafety/article/details/9045721

IIS发布WCF服务项目之本地的更多相关文章

  1. WCF开发实战系列二:使用IIS发布WCF服务

    WCF开发实战系列二:使用IIS发布WCF服务 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 上一篇中,我们创建了一个简单的WCF服务,在测试的时候,我们使用VS200 ...

  2. 使用IIS发布WCF服务

    上一篇是Windows服务为宿主的WCF服务,现在用IIS为宿主发布WCF服务. 第一步:肯定是新建一个WCF服务啦[是WCF服务应用程序],然后在解决方案上再次添加一个新项目[我们选择WCF服务库, ...

  3. WCF学习系列二_使用IIS发布WCF服务

    原创作者:灰灰虫的家http://hi.baidu.com/grayworm 上一篇中,我们创建了一个简单的WCF服务,在测试的时候,我们使用VS2008自带的WCFSVCHost(WCF服务主机)发 ...

  4. WCF开发实战系列二:使用IIS发布WCF服务 转

    转 http://www.cnblogs.com/poissonnotes/archive/2010/08/28/1811141.html 上一篇中,我们创建了一个简单的WCF服务,在测试的时候,我们 ...

  5. WCF 一步一步 发布 WCF服务 到 IIS (图)

    WCF 一步一步 发布 WCF服务 到 IIS (图) 使用VS自带的WCFSVCHost(WCF服务主机)发布WCF服务,时刻开发人员测试使用. 下面我们来看一下如何在IIS中部发布一个WCF服务. ...

  6. 使用Jenkins自动发布Windows服务项目

    不同于发布Web项目,自动发布Windows服务项目需要解决以下几个问题: 如何远程停止和开启服务?需要在发布前停止服务,在发布完成后开启服务. 如何上传编译文件到目标服务器? 问题1:如何远程停止和 ...

  7. 通过IIS寄宿WCF服务

    WCF全面解析一书中的例子S104,直接将Service目录部署到iis是无法得到服务相应的,需要在项目中新建一个web项目,删除掉自动生成的所有文件之后,把Service目录下的Calculator ...

  8. WCF学习笔记(2)——使用IIS承载WCF服务

    通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...

  9. WCF技术剖析之四:基于IIS的WCF服务寄宿(Hosting)实现揭秘

    原文:WCF技术剖析之四:基于IIS的WCF服务寄宿(Hosting)实现揭秘 通过<再谈IIS与ASP.NET管道>的介绍,相信读者已经对IIS和ASP.NET的请求处理管道有了一个大致 ...

随机推荐

  1. shell 脚本,提取文件中的内容

    使用awk.cut.sed.if.while 等 awk.cut.sed还是很重要的 这是后来修改的,可以完成 #!/bin/bash #conver formatFILE=mobile_dpi.ru ...

  2. 关于ddpush推动实现抖动视频的使用

    /**   //开机之后打开服务  开机成功打开服务ddpushService**/ <!-- 开机广播 --> <receiver android:name="com.r ...

  3. WeedFS问题收集

    weed fs FAQ Moving files to a different server Q: Hello,is it possible to move manually the .dat and ...

  4. .net MVC 中枚举类型Enum 转化成 下拉列表的数据源

    第一次写技术博文,记录下工作中遇到的问题,给自己的知识做个备份,也希望能帮助到其他的同学 最近接手了公司的一个新的项目.有个页面涉及相关设计. 分享一个经常用到的吧. 方法一: 直入主题吧 我们的目的 ...

  5. 使用TCPDF插件生成pdf以及pdf的中文处理

    目录(?)[+] 多种多样的pdf开发库 WKHTMLTOPDF 2FPDF 3TCPDF 中文问题   做了这么多年项目,以前只是在别人的项目中了解过PHP生成pdf文件,知道并不难,但是涉及到了p ...

  6. RHEL7/CentOS7中更改网卡默认名称

    1.重命名并修改网卡配置文件,将"NAME"参数更为我们熟悉的“eth*”,这里我将其改为"eth0" [root@localhost ~]# cd /etc/ ...

  7. S5PV210的电阻触摸屏&ADC控制器

    一.ADC与触摸屏控制器结构框图 1.S5PV210一共支持10路模拟输入,分别为AIN0-AIN9.其中AIN0和AIN1是只做模拟输入的,AIN2-AIN9分别可以支持2个电阻式触摸屏,所以这个就 ...

  8. machine leanring 笔记 octave命令笔记

    来源于coursea 的公开课 A*B 一般意义的矩阵相乘 A.*B矩阵各位相乘 A.^2 A矩阵的每个数平方 1./A  对A矩阵的各位取倒 .表示对每一项都如此操作 log (A) exp(A) ...

  9. Linux-read命令

    转自:http://man.linuxde.net/read read命令 read命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合. 该命令可以一次读取多个变量的值,变量和输入的 ...

  10. Java 名词

    Plain Ordinary Java Object    pojo  简单java对象 Constant   常量 Business Object   BO  业务对象 Framework  框架