[Windows Azure]將WCF部署至雲端

  • 2696
  • 0

摘要:[Windows Azure]將WCF部署至雲端

這篇其實要講的是我部署WCF遇到的困難,那時候部署上去怎麼測都失敗,後來才發現原來是.NET Framework 3.5的關係

以下先簡述WCF service的部署過程:

1.新建azure專案,並加入一Web Role

2.加入wcf service,並實作

3.更改Binding為basicHttpBinding

 <service behaviorConfiguration="WebRole1.Service1Behavior" name="WebRole1.Service1">

                <endpoint address="" binding="basicHttpBinding" contract="WebRole1.IService1">

                    <identity>

                        <dns value="localhost" />

                    </identity>

                </endpoint>

                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

            </service>

4.完成

以上為正常的WCF部署過程

可是當你的Web Role是運行在.NET Framework 3.5的話,就必須要手動更改一些設定

請參考msdn的解釋,節錄重點如下:

1.灌符合作業系統的QFE

Vista/Server 2008: http://code.msdn.microsoft.com/KB971842

Win7/Server 2008 R2: http://code.msdn.microsoft.com/KB981002

2.Web.config加入以下behavior設定

<behavior name="LoadBalancedBehavior">

          <serviceMetadata httpGetEnabled="true" />

          <useRequestHeadersForMetadataAddress>

            <defaultPorts>

              <add scheme="http" port="81" />

              <add scheme="https" port="444" />

            </defaultPorts>

          </useRequestHeadersForMetadataAddress>

 

          <!-- Other service behaviors as necesary -->

 

        </behavior>

 

3.將以下屬性加入至wcf service

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]

 

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
    public class Service1 : IService1
    {
        public void DoWork()
        {
        }

    }

 

4.大功告成!