zoukankan      html  css  js  c++  java
  • Win7下使用IIS托管WCF服务

    Win7下使用IIS托管WCF服务

    第一步,确保Win7正确安装了IIS。

    操作步骤:

    1. 打开控制面板-程序和功能-点击左侧“打开或关闭Windows功能”,在弹出框中选中“Internet信息服务”,需要注意的是有的需要将其展开,选中相关项。
    2. 在浏览器中输入http://localhost,如果出现了IIS启动界面,即表示IIS安装成功。

    第二步,在进行IIS托管WCF服务之前,先建立一个asp.net程序试下。

    由于Win7+VS2010使用的是.Net 4.0,所以需要确保注册了asp.net 4.0。

    操作步骤:

    1. 进入C:\Windows\System32找到cmd.exe,右键“以管理员身份运行”,然后在控制台输入:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319切换到该目录
    2. 然后输入:aspnet_regiis.exe –i,就会看到正在注册,以及注册成功的提示信息。

    备注:最好使用控制台来进行asp.net的注册,其实也可以直接以管理员身份运行aspnet_regiis.exe,但是会看不到是否成功的提示!

    第三步:创建解决方案,并发布asp.net网站

    操作步骤:

    1. 创建一个默认的asp.net网站,不用更改其中任何东西。
    2. 在项目上,右键“属性页”,在“启动选项”中的“特定页”和服务器,进行如下设置:

    需要注意的是,这时如果你在项目上右键-在浏览器中查看,会发现不能访问。

    1. 鼠标右键-发布网站,出现如下图所示对话框:

    点击“目标位置”进入如图对话框:

    选择“文件系统”,即表示你要将你的网站发布到的本地计算机的位置,在第四步建立网站的时候会引用。

    备注:由于,我们没有修改代码,应该发布会很顺利。

    第四步:建立站点。

    操作步骤:

    1. 控制面板-管理工具-Internet信息服务(IIS)管理器,双击进入。或者,从桌面的计算机/我的电脑-鼠标右键“管理”-展开“服务和应用程序”-选择“Internet信息服务(IIS)管理器”也看进入。
    2. 在左侧,应用程序池,点击可以看到右侧详细的右侧应用程序池列表,右击空白处“设置应用程序池默认设置”-第一项“.NET Framework版本”,选择v4.0。
    3. 右键左侧“网站”-选择“添加网站”,输入“网站名称”,物理路径中引用第三步发布网站的目录,IP地址输入127.0.0.1表示本地,端口不变,主机名暂不输入,如果输入了可能不能访问。好了,点击确定就OK了。
    4. 接下来,做一些小的设置。首先,由于IIS 7默认使用的是VB,而我使用的是C#,所以需要设置下。点击你建立的网站,会发现左侧的一些设置选项,如下图:

    具体可能,你看到的和这里不一致,有的与版本有关,还有的就是和你之前安装IIS选项有关。首先,选择双击第一个“.NET编译”,默认语言选择为:C#;接着双击选择IIS中的ASP,在行为中设置“启用父路径”为true;最后一个双击选择“目录浏览”,最右侧选择“启动”。

    5.回到你站点,右键“管理网站”-“浏览”,会弹出启动浏览器,如果你已经可以看到默认的asp.net网站,那就表示已经OK了。

    由于,有的操作步骤可能不是按照我上面的来的,可能会出现下面的错误信息:

    找不到“ManagedPipelineHandler”模块的错误信息,那就是因为没有注册asp.net4.0的缘故,返回执行第二步。

    注意:在第四步的时候,我们并没有建立域名绑定,如果设置了主机名,我们需要在C:\Windows\System32\drivers\etc中的hosts文件中添加一行:

    127.0.0.1 主机名

    这样,你就可以通过域名访问你的站点了。

    第五步:建立WCF服务,托管到IIS。

    这里,我使用WCF服务库+WCF服务应用程序+启用了AJAX的WCF服务。

    1. 创建WCF服务库,在解决方案中新添加一个“新建项目”,选择WCF中的“WCF服务库”向其中添加服务。
    2. 创建WCF服务应用程序,在解决方案中再添加一个“新建项目”,选择WCF中的“WCF服务应用程序”,想其中添加对WCF服务库的引用,即右键-“添加引用”-选择“项目”。接下来修改*.svc文件,删除其中不必要的东西,修改如下:

    <%@ ServiceHost Language="C#" Debug="true" Service="*.*Service"%>

       其中关键的地方时Service属性,是对之前WCF服务库的引用。

    1. 在WCF服务应用程序中创建启用了AJAX的WCF服务的项目,添加这个项目的目的是解决跨域的问题。对于这个文件有几点需要注意,这里主要针对配置文件进行说明:

    a)         允许客户端脚本的运行:

    <behaviors>

          <endpointBehaviors>

            <behavior name="behavior1">

              <webHttp />

            </behavior>

            <behavior name="behavior2">

              <enableWebScript /><!--//注意这里à

            </behavior>

          </endpointBehaviors>

          <serviceBehaviors>

            <behavior name="">

              <serviceMetadata httpGetEnabled="true" />

              <serviceDebug includeExceptionDetailInFaults="false" />

            </behavior>

          </serviceBehaviors>

        </behaviors>

    b)         绑定,允许跨域访问:

    <bindings>

          <webHttpBinding>

            <binding name="bind1" crossDomainScriptAccessEnabled="true"/><!--//允许跨域访问à

          </webHttpBinding>

        </bindings>

    c)         对服务应用地址,绑定,行为,契约进行设定:

    <service name="servicename">

            <endpoint address="" behaviorConfiguration="behavior2"<!—上面行为的设置名称à

            bindingConfiguration="bind1"<!—上面绑定设置的名称à

      binding="webHttpBinding" contract="*.*Service" <!—与WCF服务库对应à/>

          </service>

    在这里,有必要说明一些问题:

    首先,启用了AJAX的WCF服务不是必须的,假如你没有使用跨域,或者你使用的不是纯粹的html页面通过js访问,你都可以不考虑通过这个服务来调用WCF服务。

    然后是,我们没有必要将启用了AJAX的WCF服务和WCF服务应用放在一起,完全可以将其二者独立,减少二者的耦合度。我们可以使用svcutil.exe工具来实现。我们会在稍后回过头来对此详细说明。

    d)         对服务应用地址,绑定,行为,契约进行设定:

    第六步:调用托管到IIS的WCF服务。

    这里,我们以一个ASP.NET空WEB应用来说明,目的是想通过纯粹的html页面实现WCF服务。

    1.准备工作,创建一个静态html页面,添加jquery文件,这里由于针对的是跨域访问,所以我们使用getJSON方法。

  • 相关阅读:
    Graceful degradation versus progressive enhancement
    表现与数据分离
    避免写出IE Bug
    js控制元素的显示与隐藏
    EntityManager方法简介
    JPA EntityManager详解(一)
    Springmvc中 同步/异步请求参数的传递以及数据的返回
    JPA详解
    单向关系中的JoinColumn
    Hibernate一对多和多对一关系详解 (转载)
  • 原文地址:https://www.cnblogs.com/systemnet123/p/2976923.html
Copyright © 2011-2022 走看看