Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WinCE试图在.NET CF 2.0中查找另一个异常的消息文本时引发FileNotFoundException_C#_Exception_Compact Framework_.net 2.0_Windows Ce - Fatal编程技术网

C# WinCE试图在.NET CF 2.0中查找另一个异常的消息文本时引发FileNotFoundException

C# WinCE试图在.NET CF 2.0中查找另一个异常的消息文本时引发FileNotFoundException,c#,exception,compact-framework,.net-2.0,windows-ce,C#,Exception,Compact Framework,.net 2.0,Windows Ce,我有一个愚蠢的WinCE应用程序,我只是试图强制执行一个异常,并从部署到设备的System.SR.dll检索异常消息 引发异常的代码如下所示: TcpClient client = new TcpClient("abcd", 1234); 但是,当SocketException尝试解析其消息时,它会抛出一个FileNotFoundException,其跟踪如下: 在System.Reflection.Assembly.InternalGetSatelliteTheAssembly()中 在Sy

我有一个愚蠢的WinCE应用程序,我只是试图强制执行一个异常,并从部署到设备的System.SR.dll检索异常消息

引发异常的代码如下所示:

TcpClient client = new TcpClient("abcd", 1234);
但是,当SocketException尝试解析其消息时,它会抛出一个FileNotFoundException,其跟踪如下:

在System.Reflection.Assembly.InternalGetSatelliteTheAssembly()中 在System.Reflection.Assembly.GetSatelliteTasembly()中 位于System.Resources.ResourceManager.InternalGetResourceSet()处 位于System.Resources.ResourceManager.GetString()处 位于System.Resources.ResourceManager.GetString()处 在System.SRSupport.hastring()中 在System.SRSupport.hastring()中 at System.SR.hastring() 在System.Net.Sockets.SocketException.makeMessage()中 在System.Net.Sockets.SocketException..ctor()上 在System.Net.Dns.ResolveInternal()上 在System.Net.Dns.GetHostEntry()上 在System.Net.Sockets.TcpClient.Connect()中 在System.Net.Sockets.TcpClient..ctor()上 在WinCeMessage.Com.SocketBlaster.Blast()上 在WinCeMessage.Form1.button1_单击() 在System.Windows.Forms.Control.OnClick()中 在System.Windows.Forms.Button.OnClick()中 在System.Windows.Forms.ButtonBase.WnProc()中 在System.Windows.Forms.Control.\u InternalWnProc()中 在Microsoft.AGL.Forms.EVL.EnterMainLoop()上 在System.Windows.Forms.Application.Run()中 在WinCeMessage.Program.Main()上

(我相信)保存这些消息的文件是System.SR.dll,当我在Visual Studio中运行它时,它会被部署到设备上。我对接了模拟器,并验证了该文件是否存在

这是System.SR.dll中引发异常的代码:

internal Assembly InternalGetSatelliteAssembly(CultureInfo culture, Version version, bool throwOnFileNotFound)
{
    if (culture != null)
    {
        Assembly assembly = null;
        AssemblyName name = this.GetName();
        if (name != null)
        {
            name.Version = version;
            name.CultureInfo = culture;
            if (name.Name != null)
            {
                name.Name = string.Concat(name.Name, ".resources");
                name.CodeBase = null;
            }
            try
            {
                StackCrawlMark stackCrawlMark = StackCrawlMark.LookForMyCaller;
                assembly = Assembly.BCL_System_Reflection_Assembly_LoadFromName(name, false, null, ref stackCrawlMark);
            }
            catch (IOException oException)
            {
                assembly = null;
            }
            if (assembly != null)
            {
                if (assembly == this)
                {
                    if (!throwOnFileNotFound)
                    {
                        return null;
                    }
                    else
                    {
                        throw new FileNotFoundException();
                    }
                }
            }
            else
            {
                if (!throwOnFileNotFound)
                {
                    return null;
                }
                else
                {
                    throw new FileNotFoundException();
                }
            }
        }
        return assembly;
    }
    else
    {
        throw new ArgumentNullException();
    }
}

您是说
TcpClient()
方法正在抛出异常,而您无法捕获它吗

VS2008的IntelliSense仅显示创建新的
TcpClient()
实例时引发的3个异常:

try {
  TcpClient client = new TcpClient("abcd", 1234);
} catch (ArgumentNullException) {
  Console.WriteLine("ArgumentNullException");
} catch (ArgumentOutOfRangeException) {
  Console.WriteLine("ArgumentOutOfRangeException");
} catch (SocketException) {
  Console.WriteLine("SocketException");
}
在异常上放置断点


但是,我猜您的端口号超出范围。

您是说
TcpClient()
方法正在抛出异常,而您无法捕获它吗

VS2008的IntelliSense仅显示创建新的
TcpClient()
实例时引发的3个异常:

try {
  TcpClient client = new TcpClient("abcd", 1234);
} catch (ArgumentNullException) {
  Console.WriteLine("ArgumentNullException");
} catch (ArgumentOutOfRangeException) {
  Console.WriteLine("ArgumentOutOfRangeException");
} catch (SocketException) {
  Console.WriteLine("SocketException");
}
在异常上放置断点


不过,我的猜测是,您的端口号超出了范围。

我最终制定了一个新的解决方案,该解决方案似乎因某种原因而中断。

我最终制定了一个新的解决方案,该解决方案似乎因某种原因而中断。

是的。查看我的stacktrace,SocketException构造函数实际上抛出了一个未找到的文件异常:System.Net.Sockets.SocketException..ctor()。此外,这是紧凑型框架的一个特点。完整框架不必像这样查找它的异常消息。我知道
TcpClient
的重载允许您指定主机和端口,但也有一个版本不接受任何参数。我想以后可以加上。那个版本对你也有影响吗?有时一个版本不能工作,但另一个版本可以。如果没有抛出异常,那么我的测试将是无用的。我正在尝试抛出一个异常,以便确保加载正确的异常消息。目前还没有发生。查看我的stacktrace,SocketException构造函数实际上抛出了一个未找到的文件异常:System.Net.Sockets.SocketException..ctor()。此外,这是紧凑型框架的一个特点。完整框架不必像这样查找它的异常消息。我知道
TcpClient
的重载允许您指定主机和端口,但也有一个版本不接受任何参数。我想以后可以加上。那个版本对你也有影响吗?有时一个版本不能工作,但另一个版本可以。如果没有抛出异常,那么我的测试将是无用的。我正在尝试抛出一个异常,以便确保加载正确的异常消息。目前这种情况还没有发生