最近由于项目需求,要做一个上传文件附件的功能,由于是多用户访问,所以这就用到了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. 引入math模块中的log()方法,导致"TypeError: return arrays must be of ArrayType",什么原因?

    from math import log from numpy import *import operator ............ re = log(pro,2) ............ Ty ...

  2. CMake比较实用的命令小记

    最近将项目迁移到CMake进行管理,对CMake进行了一些研究,觉得有一些命令非常实用但很少有资料提到,在这里做一个总结,至于太普通常用的命令就不提了. OPTION(OPTION_VAR " ...

  3. @UniqueConstraint

    jedis UniqueConstraint定义在Table或SecondaryTable元数据里,用来指定建表时需要建唯一约束的列. 元数据属性说明: columnNames:定义一个字符串数组,指 ...

  4. UNIX网络编程——getsockname和getpeername函数

    UNIX网络编程--getsockname和getpeername函数   来源:网络转载   http://www.educity.cn/linux/1241293.html     这两个函数或者 ...

  5. PHP大文件存储示例,各种文件分割和合并(二进制分割与合并)

    最近要对视频进行上传,由于涉及到的视频非常的大,因此采用的是分片上传的格式,下面是一个简单的例子: split.php <?php $i = 0; //分割的块编号 $fp = fopen(&q ...

  6. oracle的游标

    declare v_0 number; v_1 number; cursor c1 is select productordernumber from his_productorder@pro_crm ...

  7. scala-类

    ---恢复内容开始--- 随笔记录scala中,有哪些类,如何定义一个类,有哪些注意点. 一,scala中有哪些类? 1,简单类 class 2,单例模式 object 3,伴生类 4,case cl ...

  8. React Test相关资料

    karma 前端测试驱动器,生产测试报告,多个浏览器 mocha js的测试框架,相当于junit chai,单元测试的断言库,提供expect shudl assert enzyme sinon.j ...

  9. TFS Build Definition And Auto Deploy

    一台build machine上一般只有一个build service[对应一个build controller]来serve一个team project collection,但又workaroun ...

  10. Google V8编程详解(五)JS调用C++

    http://blog.csdn.net/feiyinzilgd/article/details/8453230 最近由于忙着解决个人单身的问题,时隔这么久才更新第五章. 上一章主要讲了Google ...