Note
ćć®ćć¼ćøć«ć¢ćÆć»ć¹ććć«ćÆćęæčŖćåæ č¦ć§ćć ćµć¤ć³ć¤ć³ć¾ććÆćć£ć¬ćÆććŖć®å¤ę“ć試ćććØćć§ćć¾ćć
ćć®ćć¼ćøć«ć¢ćÆć»ć¹ććć«ćÆćęæčŖćåæ č¦ć§ćć ćć£ć¬ćÆććŖć®å¤ę“ć試ćććØćć§ćć¾ćć
ExpectedExceptions ćµć³ćć«ćÆćåęå®ććććÆć©ć¤ć¢ć³ćć使ēØćććØćć«äŗęćććä¾å¤ććć£ććććę¹ę³ć示ćć¦ćć¾ćć ćć®ćµć³ćć«ćÆćé»åćµć¼ćć¹ćå®č£ ćć ä½ę„ć®éå§ ć«åŗć„ćć¦ćć¾ćć ćć®ćµć³ćć«ć§ćÆććÆć©ć¤ć¢ć³ććÆć³ć³ć½ć¼ć« ć¢ććŖć±ć¼ć·ć§ć³ (.exe) ć§ććććµć¼ćć¹ćÆć¤ć³ćæć¼ććć ć¤ć³ćć©ć”ć¼ć·ć§ć³ ćµć¼ćć¹ (IIS) ć«ćć£ć¦ćć¹ćććć¦ćć¾ćć
注
ćć®ćµć³ćć«ć®ć»ććć¢ććęé ćØćć«ćęé ćÆććć®ććććÆć®ęå¾ć«ććć¾ćć
ćć®ćµć³ćć«ć§ćÆćę£ććććć°ć©ć ć§å¦ēććåæ
č¦ććć 2 ć¤ć®äŗęćććä¾å¤ć®ēØ®é” ( TimeoutException 㨠CommunicationException) ććć£ćććć¦å¦ēććę¹ę³ć示ćć¾ćć
Windows Communication Foundation (WCF) ćÆć©ć¤ć¢ć³ćć®éäæ”ć”ć½ććććć¹ćć¼ćććä¾å¤ć«ćÆćäŗęććććć®ćØćäŗęććŖććć®ćććć¾ćć äŗęććŖćä¾å¤ć«ćÆć OutOfMemoryException ćŖć©ć®č“å½ēćŖćØć©ć¼ćć ArgumentNullException ć InvalidOperationExceptionćŖć©ć®ććć°ć©ćć³ć° ćØć©ć¼ćå«ć¾ćć¾ćć éåøøćäŗęććŖććØć©ć¼ćå¦ēćć便å©ćŖę¹ę³ćÆćŖććććé常㯠WCF ćÆć©ć¤ć¢ć³ćéäæ”ć”ć½ćććå¼ć³åŗććØćć«ćć£ććććŖćć§ćć ććć
WCF ćÆć©ć¤ć¢ć³ćäøć®éäæ”ć”ć½ććććć®äŗęćććä¾å¤ć«ćÆć TimeoutExceptionć CommunicationExceptionćććć³ CommunicationExceptionć®ę“¾ēćÆć©ć¹ćå«ć¾ćć¾ćć ććććÆćWCF ćÆć©ć¤ć¢ć³ććäøę¢ććéäæ”ćØć©ć¼ćå ±åććććØć§å®å
Øć«å¦ēć§ććéäæ”äøć®åé”ć示ćć¾ćć å¤éØč¦å ćÆćä»»ęć®ć¢ććŖć±ć¼ć·ć§ć³ć§ćććć®ćØć©ć¼ćå¼ćčµ·ććåÆč½ę§ććććććę£ććć¢ććŖć±ć¼ć·ć§ć³ćÆćććć®ä¾å¤ććć£ććććēŗēćććØćć«å復ććåæ
č¦ćććć¾ćć
CommunicationException ć®ę“¾ēćÆć©ć¹ć«ćÆććÆć©ć¤ć¢ć³ććć¹ćć¼ć§ćććć®ćććć¤ćććć¾ćć å “åć«ćć£ć¦ćÆćć¢ććŖć±ć¼ć·ć§ć³ćÆćććć®äøéØććć£ćććć¦ē¹å„ćŖå¦ēćč”ćć¾ćććä»ć®ć¢ććŖć±ć¼ć·ć§ć³ćÆ CommunicationExceptionćØćć¦å¦ēć§ćć¾ćć ćććå®ē¾ććć«ćÆćć¾ćććå
·ä½ēćŖä¾å¤ć®ēØ®é”ććć£ćććć¦ćććå¾ć® catch å„ć§ CommunicationException ććć£ćććć¾ćć
ćÆć©ć¤ć¢ć³ćéäæ”ć”ć½ćććå¼ć³åŗćć³ć¼ććÆć TimeoutException 㨠CommunicationExceptionććć£ććććåæ
č¦ćććć¾ćć ćć®ćććŖćØć©ć¼ćå¦ēććę¹ę³ć® 1 ć¤ćÆććÆć©ć¤ć¢ć³ććäøę¢ććéäæ”ćØć©ć¼ćå ±åććććØć§ćć
try
{
...
double result = client.Add(value1, value2);
...
client.Close();
}
catch (TimeoutException exception)
{
Console.WriteLine("Got {0}", exception.GetType());
client.Abort();
}
catch (CommunicationException exception)
{
Console.WriteLine("Got {0}", exception.GetType());
client.Abort();
}
äŗęćććä¾å¤ćēŗēććå “åććÆć©ć¤ć¢ć³ććÆå¾ć§ä½æēØć§ććå “åćØä½æēØć§ććŖćå “åćććć¾ćć ćÆć©ć¤ć¢ć³ććć¾ć 使ēØć§ćććć©ćććå¤ęććć«ćÆć State ććććć£ć CommunicationStateććć¦ććććØć確čŖćć¾ććéććć ć¾ć éćć¦ććå “åćÆćå¼ćē¶ć使ēØć§ćć¾ćć ćć仄å¤ć®å “åćÆććÆć©ć¤ć¢ć³ććäøę¢ćććć®ćÆć©ć¤ć¢ć³ććøć®ćć¹ć¦ć®åē
§ćč§£ę¾ććåæ
č¦ćććć¾ćć
注ęäŗé
å¤ćć®å “åćć»ćć·ć§ć³ćęć¤ćÆć©ć¤ć¢ć³ććÆä¾å¤ć®å¾ć«ä½æēØć§ććŖććŖććć»ćć·ć§ć³ćęććŖććÆć©ć¤ć¢ć³ććÆä¾å¤ć®å¾ćå¼ćē¶ć使ēØć§ćć¾ćć ćć ććć©ć”ććäæčؼćććŖććććä¾å¤ć®å¾ć«ćÆć©ć¤ć¢ć³ćć®ä½æēØćē¶č”ććå “åćÆćć¢ććŖć±ć¼ć·ć§ć³ć§ State ććććć£ć確čŖćć¦ććÆć©ć¤ć¢ć³ććć¾ć éććć¦ćććć©ććć確čŖććåæ
č¦ćććć¾ćć
ćµć³ćć«ćå®č”ćććØćęä½ć®åæēćØä¾å¤ććÆć©ć¤ć¢ć³ć ć³ć³ć½ć¼ć« ć¦ć£ć³ćć¦ć«č”Øē¤ŗććć¾ćć
ćÆć©ć¤ć¢ć³ć ććć»ć¹ćÆ 2 ć¤ć®ć·ććŖćŖćå®č”ććććććć Add ćå¼ć³åŗćććć®å¾ć« Divide ćå¼ć³åŗćććØćć¾ćć ęåć®ć·ććŖćŖć§ćÆć Divideć®å¼ć³åŗććč”ćåć«ćÆć©ć¤ć¢ć³ććäøę¢ććććØć§ćććććÆć¼ćÆć®åé”ćć·ćć„ć¬ć¼ććć¾ćć 2 ēŖē®ć®ć·ććŖćŖć§ćÆććæć¤ć ć¢ć¦ććēććć¦ć”ć½ćććå®äŗććŖććŖćććććæć¤ć ć¢ć¦ćę”ä»¶ćēŗēćć¾ćć ćÆć©ć¤ć¢ć³ć ććć»ć¹ććć®äŗę³ćććåŗåćÆę¬”ć®ćØććć§ćć
Add(100,15.99) = 115.99
Simulated network problem occurs...
Got System.ServiceModel.CommunicationObjectAbortedException
Add(100,15.99) = 115.99
Set timeout too short for method to complete...
Got System.TimeoutException
ćµć³ćć«ćčØå®ććć«ććå®č”ććć«ćÆ
Windows Communication Foundation ćµć³ćć« ć®One-Time ć»ććć¢ććęé ćå®č”ćć¦ććććØć確čŖćć¾ćć
ć½ćŖć„ć¼ć·ć§ć³ć® C# ć¾ć㯠Visual Basic .NET ćØćć£ć·ć§ć³ććć«ćććć«ćÆććWindows Communication Foundation ćµć³ćć«ć®ćć«ććć®ęé ć«å¾ćć¾ćć
åäøć¾ććÆč¤ę°ć®ć³ć³ćć„ć¼ćæć¼éć®ę§ęć§ćµć³ćć«ćå®č”ććć«ćÆććWindows Communication Foundation Samplesć®å®č”ćć®ęé ć«å¾ćć¾ćć