<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [WCF]將WCF程序部署在IIS上

      WCF 機(jī)制確實不錯,雖然談不上對它有多了解,但僅從應(yīng)用的角度看,有兩個顯著:封裝通信,契約編程。下面演練一個Demo 來看看如何將 WCF 部署在IIS里頭。這個 Demo 服務(wù)器提供一個運(yùn)算服務(wù),客戶端根據(jù)服務(wù)器契約調(diào)用該服務(wù),得到結(jié)果。

      1,新建一個目錄(IIS具有訪問權(quán)限的,所以別在系統(tǒng)目錄中創(chuàng)建) IISHostedCalcService,然后在其中新建名為 service.svc 文件,其內(nèi)容如下:

      <%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService"%>

      這一行聲明 ServiceHost 的屬性,如開發(fā)語言,提供的服務(wù)名稱等。

      2,IISHostedCalcService目錄下,新建 App_Code 目錄,在 App_Code 下新建名為 Service.cs 文件,其內(nèi)容如下:

      using System;
      using System.ServiceModel;
      
      namespace Microsoft.ServiceModel.Samples
      {
          [ServiceContract]
          public interface ICalculator
          {
              [OperationContract]
              double Add(double n1, double n2);
              [OperationContract]
              double Subtract(double n1, double n2);
              [OperationContract]
              double Multiply(double n1, double n2);
              [OperationContract]
              double Divide(double n1, double n2);
          }
      
          public class CalculatorService : ICalculator
          {
              public double Add(double n1, double n2)
              {
                  return n1 + n2;
              }
              public double Subtract(double n1, double n2)
              {
                  return n1 - n2;
              }
              public double Multiply(double n1, double n2)
              {
                  return n1 * n2;
              }
              public double Divide(double n1, double n2)
              {
                  return n1 / n2;
              }
          }
      }

      這部分就是前面提到的特點(diǎn)之一:契約編程。在這里,IClculater 就是契約(看到ServiceContract attribute 修飾符了沒?),服務(wù)器發(fā)布這個契約,任何客戶端代碼都可以使用基于該契約的代碼。(不就是接口么?確實算是)。

      3,IISHostedCalcService目錄下,新建 Web.config 文件,其內(nèi)容如下:

      <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
        <system.serviceModel>
          <behaviors>
            <serviceBehaviors>
              <behavior name="CalculatorServiceBehavior">
                <serviceMetadata httpGetEnabled="True"/>
              </behavior>
            </serviceBehaviors>
          </behaviors>
          
          <services>
            <!-- This section is optional with the default configuration
              model introduced in .NET Framework 4 -->
            <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior" >
                     
              <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc  -->
              <endpoint address=""
                        binding="wsHttpBinding"
                        contract="Microsoft.ServiceModel.Samples.ICalculator" />
      
              <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
              <endpoint address="mex"
                        binding="mexHttpBinding"
                        contract="IMetadataExchange" />
            </service>
          </services>
        </system.serviceModel>
      
      </configuration>

      因為 WCF 需要 Host 在IIS上,自然需要進(jìn)行一些配置,這些配置都放在 Web.config 里頭。在運(yùn)行時,WCF就是根據(jù)這些信息構(gòu)建一個通信終端(endpoint),讓客戶端可以與之進(jìn)行通信。

      4,至此,服務(wù)端代碼寫完。下面來把這個 WCF 程序部署到 IIS 里面。首先確認(rèn)你已經(jīng)安裝了.NET 4 和 IIS 7。IIS 7 可以通過如下 installIIS.bat 文件安裝(需要以管理員身份運(yùn)行該 bat),其內(nèi)容如下:

      start /w ocsetup IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HttpRedirect;IIS-ApplicationDevelopment;IIS-ASPNET;IIS-NetFxExtensibility;IIS-ASP;IIS-CGI;IIS-ISAPIExtensions;IIS-ISAPIFilter;IIS-ServerSideIncludes;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-CustomLogging;IIS-ODBCLogging;IIS-Security;IIS-BasicAuthentication;IIS-WindowsAuthentication;IIS-DigestAuthentication;IIS-ClientCertificateMappingAuthentication;IIS-IISCertificateMappingAuthentication;IIS-URLAuthorization;IIS-RequestFiltering;IIS-IPSecurity;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementConsole;IIS-ManagementScriptingTools;IIS-ManagementService;IIS-IIS6ManagementCompatibility;IIS-Metabase;IIS-WMICompatibility;IIS-LegacyScripts;IIS-LegacySnapIn;IIS-FTPServer;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI;IIS-WebDAV;IIS-FTPSvc;IIS-FTPExtensibility
      
      C:
      cd C:\windows\System32\inetsrv
      
      appcmd set config /section:defaultDocument
      appcmd add apppool /name:"MyAppPool" /managedPipelineMode:Integrated /managedRuntimeVersion:v4.0
      
      %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

      5,進(jìn)入控制面板->管理工具->Internet 信息服務(wù)管理器,右擊 Default Web Site ,在彈出菜單中選擇添加應(yīng)用程序,如圖所示:(MyAppPool 是.NET 4應(yīng)用程序池,如果沒有請先創(chuàng)建)

      6,測試一下,在瀏覽器中輸入:http://localhost/IISHostedCalc/Service.svc,就應(yīng)該能看到如下提示(注意 yourhost 為你機(jī)器的hostname):

      CalculatorService 服務(wù)
      
      已創(chuàng)建服務(wù)。
      
      若要測試此服務(wù),需要創(chuàng)建一個客戶端,并將其用于調(diào)用該服務(wù)。可以使用下列語法,從命令行中使用 svcutil.exe 工具來進(jìn)行此操作:
      
      
      svcutil.exe http://yourhost/IISHostedCalc/service.svc?wsdl
      這將生成一個配置文件和一個包含客戶端類的代碼文件。請將這兩個文件添加到客戶端應(yīng)用程序,并使用生成的客戶端類來調(diào)用服務(wù)。例如:
      
      C#
      
      class Test
      {
          static void Main()
          {
              CalculatorClient client = new CalculatorClient();
      
              // 使用 "client" 變量在服務(wù)上調(diào)用操作。
      
              // 始終關(guān)閉客戶端。
              client.Close();
          }
      }
      
      Visual Basic
      
      Class Test
          Shared Sub Main()
              Dim client As CalculatorClient = New CalculatorClient()
              ' 使用 "client" 變量在服務(wù)上調(diào)用操作。
      
              ' 始終關(guān)閉客戶端。
              client.Close()
          End Sub
      End Class

      7,至此服務(wù)器部署完畢,下面就是按照提示來編寫客戶端代碼了。首先將 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 加入到系統(tǒng)變量 PATH 中去(方便在命令行上使用 svcutil 命令)。然后在IISHostedCalcService 目錄下新建 client 目錄,從命令行進(jìn)入 client 目錄,輸入命令:

      svcutil http://yourhost/IISHostedCalc/service.svc?wsdl

      就可以生成客戶端需要的契約(CalculatorService.cs)以及與服務(wù)器通信所需的配置文件(out.config):

      8,編寫控制臺客戶端測試程序。新建C# 控制臺程序,修改 Main() 為:

                  var client = new CalculatorClient();
      
                  // 使用 "client" 變量在服務(wù)上調(diào)用操作。
                  double i = client.Add(100, 23);
      
                  Console.WriteLine(" >> add result {0}", i);
      
                  // 始終關(guān)閉客戶端。
                  client.Close();
      
                  Console.ReadKey();

      將 CalculatorService.cs 添加至該工程,將 out.config改名為 app.config添加至該工程,設(shè)置 app.config的拷貝策略為 Copy if newer。修改 app.config為(注意 yourhost 為你機(jī)器的hostname,與前面的提示頁面中出現(xiàn)的一致):

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
          <system.serviceModel>
              <bindings>
                  <wsHttpBinding>
                      <binding name="WSHttpBinding_ICalculator" closeTimeout="00:01:00"
                          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                          maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                          messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                          allowCookies="false">
                          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                          <reliableSession ordered="true" inactivityTimeout="00:10:00"
                              enabled="false" />
                          <security mode="Message">
                              <transport clientCredentialType="Windows" proxyCredentialType="None"
                                  realm="" />
                              <message clientCredentialType="Windows" negotiateServiceCredential="true"
                                  algorithmSuite="Default" establishSecurityContext="true" />
                          </security>
                      </binding>
                  </wsHttpBinding>
              </bindings>
      
              <client>
                  <endpoint address="http://yourhost/IISHostedCalc/service.svc"
                      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICalculator"
                      contract="ICalculator" name="WSHttpBinding_ICalculator">
                      <identity>
                          <servicePrincipalName value="host/yourhost" />
                      </identity>
                  </endpoint>
              </client>
          </system.serviceModel>
      </configuration>

      9,像工程中添加System.ServiceModel 和 System.ServiceProcess 兩個 Reference,編譯運(yùn)行。大功告成,客戶端調(diào)用服務(wù)器端代碼,并得到了返回結(jié)果:

      10,注意將 WCF 部署到 IIS 雖然很方便,但是由于 IIS 的權(quán)限非常低,通常是坐不了的。如果要獲得較高權(quán)限級別的操作(任意寫磁盤文件等),可以將 WCF 部署到 window service 中

       

      參考鏈接:

      How to: Host a WCF Service in IIS

      posted @ 2012-08-20 14:01  飄飄白云  閱讀(3289)  評論(0)    收藏  舉報
      本博客遵循 Creative Commons License “署名-非商業(yè)用途-保持一致”創(chuàng)作共用協(xié)議。 與我聯(lián)系
      主站蜘蛛池模板: 胶州市| 一本加勒比hezyo无码专区| 狠狠色丁香婷婷久久综合五月| 亚洲精品午夜精品| 一本一道av中文字幕无码| 久久精品国产99国产精品| 亚洲熟妇色xxxxx欧美老妇| 日韩精品一区二区三区激情| 欧美丰满熟妇乱XXXXX网站| 国产国语毛片在线看国产| 国产精品中文字幕日韩| 国产精品多p对白交换绿帽| 亚洲最大成人av在线天堂网| 亚洲精品成人区在线观看| 色综合久久中文综合久久激情 | 97精品伊人久久久大香线蕉 | 婷婷久久综合九色综合88| 成人精品动漫一区二区| 国产亚洲999精品AA片在线爽| 亚洲国产午夜精品福利| 视频一区二区三区四区不卡| 久久一日本道色综合久久| 国产精品久久久久7777| 国产精品免费久久久免费| 办公室强奷漂亮少妇视频| 欧洲中文字幕一区二区| 把女人弄爽大黄A大片片| 日韩欧美精品suv| 国产精品亚洲二区在线播放| 国产午夜A理论毛片| 亚洲精品一区国产| 日韩高清亚洲日韩精品一区二区| 欧美精欧美乱码一二三四区| 女人腿张开让男人桶爽| 国产av一区二区三区综合| 成人3D动漫一区二区三区| 人妻日韩人妻中文字幕| 国产一区二区三区18禁| 国产精品黄色精品黄色大片| 色哟哟www网站入口成人学校| 国产在线精品第一区二区|