日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
在Windows Azure中實現(xiàn)和調試一個WCF服務(中)

在Windows Azure中實現(xiàn)和調試一個WCF服務(中)

原創(chuàng)
作者:編譯/周雪峰 2011-03-15 16:07:33

云計算 為了把在Windows Azure中運行的,使用強大的WCF框架的服務暴露出來,Windows Azure提供了一個WCF角色。無論在哪個框架和平臺上構建復雜的,具有高度可擴展性的系統(tǒng),通過它們的功能進行邏輯分組,針對那些分組來抽象代碼,并且分別執(zhí)行它們,都是一種簡單而高效的擴展性策略。

我們提供的服務有:成都網站設計、做網站、微信公眾號開發(fā)、網站優(yōu)化、網站認證、文山州ssl等。為成百上千家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的文山州網站制作公司

本文接《在Windows Azure中實現(xiàn)和調試一個WCF服務(上)》和《在Windows Azure中實現(xiàn)和調試一個WCF服務(下)》

做一些改動

如果你跳轉到了***的總結文件上,那么歡迎回來。

現(xiàn)在我們會對這個基礎項目做一些改動,以便于我們可以告訴大家,如何擴展這個解決方案的,如何中斷它,以及如何找出它中斷的原因。

首先,我會給這個服務添加一個新的方法,以便于我們可以看到如何開始擴展這個服務。定位到“IService1”接口,然后添加下面這些代碼:

[OperationContract]       
float Divide(float dividend, float divisor);

現(xiàn)在,在這個接口上,我們擁有了一個新方法,我們必須要實現(xiàn)他。打開“Service1.svc.cs”,然后添加下面這些代碼:

public float Divide(float dividend, float divisor)

{

             if (divisor == 0F)

            {

                        throw new DivideByZeroException(); 

            }

            return dividend / divisor;
}

現(xiàn)在,我們擁有了一個新方法,我們終于可以讓一些事情失敗了!

在Visual Studio中運行它(或者debug),然后你會看到下面這個頁面:

雖然這可以保證這個WCF服務是可以正常工作的,但是我們無法使用瀏覽器來調用它。取而代之,我們會求助于一個簡單的,可以和WCF進行通信的Worker角色客戶端。

首先,向這個解決方案中添加一個新的項目,在圖中那個節(jié)點上右擊:

然后,這個Worker角色需要創(chuàng)建一個可以和我們前面創(chuàng)建的WCF服務進行通信的客戶端。要完成這個工作,需要在“References”上右擊,然后添加一個“Service Reference”:

然后,它可以讓我們選擇是添加一個現(xiàn)有的服務,還是添加是一個解決方案中的服務。目前來說,我們使用解決方案內部的WCF服務。

                try

              {

                    for (int i = 100; i >= 0; i--)

                    {

                        Trace.WriteLine(service1.Divide(100F, (float)i));

                    }

                }

                catch (Exception ex)

                {

                    Trace.TraceError(ex.ToString());

                }

實際上,綁定到一個現(xiàn)有Azure實例會更加容易一些——這是因為在本地綁定你的解決方案可能會獲得錯誤的端口號(本地的IIS端口而不是Windows Azure Emulator運行的端口——如果你沒有小心地關閉掉你的調試會話,那么這個Windows Azure Emulator端口可能會改變)。如下圖所示,當查找一個本地解決方案的時候,獲得了一個錯誤的端口號:

為了糾正這個問題,可以用你為WCF角色手工配置的端口替換掉這個端口號。你可以在“ServiceDefinition.csdef”文件中配置這個端口號,或者也可以通過在WCF角色上右擊,然后打開它的屬性頁的方式來達到這個目的,在這個例子中,我就是這樣做的:

注意,接下來你必須修改的地址屬性,讓它的端口號和上面配置的端口號相匹配。任何時候,Compute Emulator都不會正確地關閉,你必須重啟它們,以確保它們是匹配的,否則,你會得到一個異常,告訴你在WCF客戶端配置中指定的端口沒有端點(endpoint)在監(jiān)聽。

為了成功地調用這個WCF服務,我們需要給Worker角色添加一些代碼。我們簡單地從100迭代到0,以100F作為參數(shù)調用Divide方法,***,在迭代到0的時候,我們的代碼會故意地拋出一個“DivideByZeroException”異常。

                try

                {

                    for (int i = 100; i >= 0; i--)

                    {

                        Trace.WriteLine(service1.Divide(100F, (float)i));

                    }

                }

                catch (Exception ex)

                {

                    Trace.TraceError(ex.ToString());

                }

客戶端的WCF通信輸出會收到一個WCF異常,但是不會包含一些細節(jié)。

snip...

10

11.11111

12.5

14.28571

16.66667

20

25

33.33333

50

100

[WaWorkerHost.exe] System.ServiceModel.FaultException: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.

Server stack trace:

at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)

at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)

at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)

at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)

at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)

at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:

at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

at WcfClientRole.AzureWcfBasic.IService1.Divide(Single dividend, Single divisor)

at WcfClientRole.AzureWcfBasic.Service1Client.Divide(Single dividend, Single divisor) in c:\dev\Blog\WCFBasic\WcfClientRole\Service References\AzureWcfBasic\Reference.cs:line 119

at WcfClientRole.WorkerRole.Run() in c:\dev\Blog\WCFBasic\WcfClientRole\WorkerRole.cs:line 31

從理論上來說,我們可以打開異常信息的細節(jié),但是這不是一種安全的做法。為了接下來可以調試這個信息,我們需要看一看剛才配置過的Windows Azure Diagnostics。

本文接《在Windows Azure中實現(xiàn)和調試一個WCF服務(上)》和《在Windows Azure中實現(xiàn)和調試一個WCF服務(下)》

原文名:Implementing and Debugging a WCF Service in Windows Azure 作者:Andy

【本文乃51CTO精選譯文,轉載請標明出處!】

【編輯推薦】

  1. 微軟公布云計算平臺Azure收費模式細節(jié)
  2. 云計算意在長遠,微軟云計算服務Windows Azure已經啟用
  3. 技術透析:Windows Azure Platform框架與組成
  4. 微軟Windows Azure Platform技術解析
  5. 走近微軟云:SQL Server到Azure數(shù)據同步
  6. 當微軟Azure遭遇亞馬遜EC2:五大關鍵區(qū)別
  7. Windows Azure云計算平臺新增五大功能
  8. 云計算前途光明 Azure用戶數(shù)突破31000
  9. 如何把應用程序部署到Windows Azure中

文章題目:在Windows Azure中實現(xiàn)和調試一個WCF服務(中)
文章鏈接:http://www.dlmjj.cn/article/dphdphe.html