2017-03-16 93 views
0

此異常被拋出,而我顯然沒有辦法抓住它:無法趕上的try-catch C#異常

無連接可以作出,因爲目標機器積極地拒絕它127.0.0.1 :10000

來源:

Line 102:   try 
Line 103:   { 
Line 104:    var blobClient = GetClient(); <-- throws here 
Line 105:    var container = blobClient.GetContainerReference(containerName); 
Line 106:    container.CreateIfNotExists(BlobContainerPublicAccessType.Blob); 

源文件:... Blob.cs線:104

整個功能:

private static CloudBlobContainer GetContainer(string containerName) 
{ 
    try 
    { 
     var blobClient = GetClient(); 
     var container = blobClient.GetContainerReference(containerName); 
     container.CreateIfNotExists(BlobContainerPublicAccessType.Blob); 
     return container; 
    } 
    catch (HttpException ex) 
    { 
     Helpers.Error.Functions.RecordError(ex); 
     throw new HttpException(500, "Could not connect."); 
    } 
} 

GetClient()功能:

private static CloudBlobClient GetClient() 
{ 
    try 
    { 
     var account = CloudStorageAccount.Parse(Settings.Deployment.AzureConnectionString); 
     return account.CreateCloudBlobClient(); 
    } 
    catch (Exception ex) 
    { 
     Helpers.Error.Functions.RecordError(ex); 
     throw new HttpException(500, "Could not connect GetClient."); 
    } 
} 

堆棧跟蹤:

[SocketException(0x274d):無法連接,因爲 做目標機器積極拒絕它127.0.0.1:10000]
System.Net.Sockets.Socket.DoConnect(端點endPointSnapshot, 的SocketAddress的SocketAddress)520
System.Net.ServicePoint.ConnectSocketInternal(布爾connectFailure, 插座s4中,插座S6中,插座&插座,ip地址&地址, ConnectSocketState狀態,IAsyncResult的asyncResult,異常& 除外)621

[引發WebException:無法連接到遠程服務器]
System.Net.HttpWebRequest.GetResponse()1724
Microsoft.WindowsAzure。 Storage.Core.Executor.Executor.ExecuteSync(RESTCommand`1 cmd,IRetryPolicy policy,OperationContext operationContext) c:\ Program Files (x86)\ Jenkins \ workspace \ release_dotnet_master \ Lib \ ClassLibraryCommon \ Core \ Executor \ Executor。 CS:699

[StorageException:無法連接到遠程服務器]
Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync(RESTCommand`1 CMD,IRetryPolicy政策,的OperationContext的OperationContext)在 C: \ Program Files (x86)\ Jenkins \ workspace \ release_dotnet_master \ Lib \ ClassLibraryCommon \ Core \ Executor \ Executor.cs:604 Microsoft.WindowsAzure.Storage.Blob.C loudBlobContainer.CreateIfNotExists(BlobContainerPublicAccessType 存取類型,BlobRequestOptions requestOptions,的OperationContext 的OperationContext)在C:\ Program Files文件 (86)\詹金斯\工作空間\ release_dotnet_master \ LIB \ ClassLibraryCommon \斑點\ CloudBlobContainer.cs:233個 C3.Code.Controls。 Application.Storage.Blob.Blob.GetContainer(字符串 容器名稱)在... Blob.cs:104
C3.Code.Controls.Application.Storage.Blob.Blob.AddBlob(字符串 容器名稱,字符串blobReference,字節[ ]字節)在d:\ Dropbox的 (Scirra有限公司)\湯姆\ C3 網站\ C3Alpha2 \代碼\控制\應用\存儲\斑點\ Blob.cs:87
C3.Code.Callbacks.Application。在D:\ Dropbox中的ApplicationStart()(Scirra Ltd)\ Tom \ C3 Website \ C3Alpha2 \ Code \ Callbacks \ Application.cs:26
D:\ Dropbox中的C3.Global.Application_Start(Object sender,EventArgs e) (Scirra有限公司)\湯姆\ C3網站\ C3Alpha2 \ Global.asax.cs中:30

[HttpException(0X80004005):無法連接到遠程服務器]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext的 上下文,HttpApplication app)+534
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext上下文,MethodInfo []處理程序)+186
System.Web.HttpApplication.InitSpecial(HttpApplicationState狀態, MethodInfo的[]處理程序,IntPtr的appContext,HttpContext的上下文中)175
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr的 appContext,HttpContext的上下文中)424
系統。 Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr的 appContext)360

[HttpException(0X80004005):無法連接到遠程服務器]
System.Web.HttpRuntime.FirstRequestInit(HttpContext的上下文中)539
系統.Web.HttpRuntime.EnsureFirstReque stInit(HttpContext的背景下) +118 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext的背景下)+730

+0

這可能是當你在VS調試行爲,有在VS異常的設置,你需要調整的是 –

+0

我有點困惑你刪除了老問題,而不是編輯它。 –

+1

你只是想抓住一個'HttpException',其他的一切都會被抓到。我認爲你的異常實際上是一個'SocketException'。 – DavidG

回答

2

從您發佈的異常消息:

[SocketException(0x274d ):由於目標機器主動拒絕它而不能建立連接127.0.0.1:10000]

請注意,這是一個SocketException,不是HttpException但你的代碼,這樣說:

catch (HttpException ex) 

所以它沒有被抓到。無論是使用一個通用Exception趕上一切,或者切換到捕捉SocketException

+0

但他捕獲所有的異常,然後將它們包裝成'HttpException'在GetClient。 – Evk

+0

@Evk然後,我們看到的可能是不同的代碼,堆棧跟蹤清楚地說,異常是一個'SocketException'。 – DavidG

+0

是的,但發件人聲稱GetClient拋出,它只能拋出HttpException,因爲OP捕捉有所有的異常,然後手動拋出HttpException。無論如何,它似乎畢竟不是GetClient拋出。 – Evk