zoukankan      html  css  js  c++  java
  • WCF学习之旅—WCF服务的WAS寄宿(十二)

    上接    WCF学习之旅—WCF服务部署到IIS7.5(九)

              WCF学习之旅—WCF服务部署到应用程序(十)

          WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)

     

    八、WAS宿主

      IIS7允许通过HTTP外的协议进行激活和网络通信。此环境适合开发可通过 WCF支持的任何网络协议(包括http、net.tcp、net.pipe、net.msmq)进行通信的WCF服务。部署简单、管理方便,这些网络协议在部署时可像Http一样,直接丢到IIS7上即可,我们在下面的例子中以net.tcp为协议为例。IIS7以下的版本只能支持Http的通信。

      1、确保已安装IIS7的激活组件

      在应用WAS宿主时,必须确保IIS7的激活组件安装好。打开“控制面板”-->“打开或关闭Windows功能”-->对话框“Windows功能”中查看“Microsoft .NET Framework 3.5.1”中的“WCF的HTTP激活”与“WCF的非HTTP激活”。如果没安装,请安装。如下图所示。

     

    如果没有安装,“勾选相应的功能”,然后点击“确定”,进行安装。如下图所示:

     

    安装成功后我们打开IIS,点击“网站”-->“新建网站”,如下图。

     

    在“添加网站”对话框中,根据如下图填写相应的信息,在绑定信息中填写“808:*”,给网站添加net.tcp协议。如下图所示

     

    如果只添加了net.tcp协议,则网站无法启动,如下图。

     

    使用鼠标点击WCFWAS网站,需要再次添加HTTP协议。如下图。

     

    设置成功之后,如下图。

     

     

      2、开通net.tcp的协议 

      在安装成功并且在指定的网站上绑定了net.tcp以后,我们还要开通.net.tcp协议,点击我们要部署WCF的网站,在IIS管理器的操作功能区有一项“高级设置”点击后出现如下图所示高级配置的窗体

     

      在启用的协议中添加net.tcp协议(原来只对http协议支持,现在把tcp协议追加上去),中间用逗号隔离开,如上图所示。

      注意:这几个步骤一个也不能少,否则会出现:“找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址。注册的基址方案是 [http]”的错误信息。

       3、建立服务程序

      (1)在解决方案下新建WCF服务应用程序项目 WCFHost_WAS。

      (2)建立IUser与User,代码同例二一样。

      (3)修改配置文件Web.config代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <directoryBrowse enabled="false" />
        </system.webServer>
           <system.serviceModel>
         <bindings>
           <netTcpBinding>
             <binding name="netTcpBindConfig">
               <security mode="None">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                  <message clientCredentialType="Windows" />
    
               </security>
            </binding>
          </netTcpBinding>
         </bindings>
    
         <services>
    
           <service behaviorConfiguration="BookBehavior" name="WcfServiceLib.BookService">
    
             <endpoint address="" binding="netTcpBinding" contract="WcfServiceLib.IBookService" bindingConfiguration="netTcpBindConfig"></endpoint>
    
            <!--元数据交换的终结点-->
             <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" ></endpoint>
           </service>
    
         </services>
         <behaviors>
           <serviceBehaviors>
             <behavior name="BookBehavior" >
    
              <serviceMetadata/>
              <serviceDebug includeExceptionDetailInFaults="true" />
    
              <dataContractSerializer maxItemsInObjectGraph="6553600"/>
    
             </behavior>
          </serviceBehaviors>
         </behaviors>
       </system.serviceModel> 
    
        <system.web>
            <compilation defaultLanguage="c#" />
        </system.web>
    </configuration>

      4、部署服务

      像其他的Web应用程序一样,把相关的文件丢到服务器端指定目录即可。

      鼠标右键浏览User.svc,如现如下所示:

     

      说明部署成功,如上所示的服务地址为:net.tcp://服务器名/User.svc/mex

      5 、建立客户端

           (1)在WinClient项目中,添加对服务的引用(在引用上右键-->输入我们定义的服务宿主的基地址(此处为:net.tcp://developer/BookService.svc/mex-->转到-->确定)。如下图。

     

     

         (2) 在From1中添加一个“WAS获取BOOK”按钮。如下图。

     

        (3) 在btnWAS_Click事件中添加如下代码

     

      private void btnWAS_Click(object sender, EventArgs e)
            {
    
                WASBookWCF.BookServiceClient client = new WASBookWCF.BookServiceClient();
                string book = client.GetBook("10");
                textBox1.Text = book;
    
            }

     

      (4) 我们此时看客户端的配置文件:

     

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup>
    
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
        </startup>
    
        <system.serviceModel>
            <bindings>
                <netTcpBinding>
                    <bindingname="NetTcpBinding_IBookService">
    
                        <securitymode="None" />
                    </binding>
                </netTcpBinding>
                <wsHttpBinding>
                    <binding name="WSHttpBinding_IBookService" />
    
                </wsHttpBinding>
    
            </bindings>
            <client>
                <endpoint address="http://localhost:8080/BookService" binding="wsHttpBinding"
    
                    bindingConfiguration="WSHttpBinding_IBookService" contract="BookServiceReference.IBookService"
    
                    name="WSHttpBinding_IBookService">
                    <identity>
                        <userPrincipalName value="DEVELOPERAdministrator" />
    
                    </identity>
                </endpoint>
                <endpointaddress="net.tcp://developer/BookService.svc"binding="netTcpBinding"
    
                    bindingConfiguration="NetTcpBinding_IBookService"contract="WASBookWCF.IBookService"
    
                    name="NetTcpBinding_IBookService" />
            </client>
        </system.serviceModel>
    </configuration>

     

     

            (5) 点击“WAS获取BOOK”按钮,最终结果如下。

     

     

  • 相关阅读:
    [vue][element-ui]mousedown在Dialog上 mouseup在遮罩上时自动关闭弹窗的问题总结
    [ESlint]报错:使用async await时,报(local function)(): Promise<void> Parsing error: Unexpected token function
    [ESlint]报错:Vue eslint Parsing error: Unexpected token
    [CSS]position梳理
    [Node]报错:gyp verb check python checking for Python executable "python2" in the PATH
    [Node]报错:node-sassvendorwin32-x64-79inding.node Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 13.x
    Failed to start OpenLDAP Server Daemon
    与或
    struts2启动报错
    UIButton
  • 原文地址:https://www.cnblogs.com/chillsrc/p/5556970.html
Copyright © 2011-2022 走看看