zoukankan      html  css  js  c++  java
  • IIS发布WCF服务项目之本地

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

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

    1,安装IIS

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

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

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

    第二步:检查IIS的配置

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

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

    安装注册WCF组件

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

    2)进入WCF文件夹:
    cd C:WINDOWSMicrosoft.NETFrameworkv3
    .0Windows Communication Foundation

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

    C:WINDOWSMicrosoft.NETFrameworkv3.0Windows 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:WINDOWSMicrosoft.NETFrameworkv3.0Windows 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 APPPOOLDefaultAppPool' 登录失败。
     

    解决方案 

    【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

  • 相关阅读:
    51Nod 1267 4个数和为0 二分
    51Nod 1090 3个数和为0 set 二分优化
    51Nod 1001 数组中和等于K的数对 Set
    Codeforces 890C
    Codeforces 890B
    Codeforces 890A
    51nod 1058 N的阶乘的长度 位数公式
    C#调用本机摄像头
    读取、写入excel数据
    数据库笔记--基本应用
  • 原文地址:https://www.cnblogs.com/poplanchong123/p/4329835.html
Copyright © 2011-2022 走看看