2017-03-16 63 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