System.Net.WebException:无法连接到远程服务器 - 仅限LAN中的服务器

时间:2015-03-24 09:24:06

标签: c# .net sockets webserver webrequest

为了为我的公司开发Windows通用应用程序,我需要连接到我们的本地网络服务器。为了测试这个,我在我的开发机器上安装了一个xampp,到目前为止,我曾经为一些Windows CE设备开发了大约5个应用程序。现在我们也想使用Tablets,用于非常具体的Usecases。

我的第一个ModernUI应用程序的唯一目的是将WebRequest发送到服务器并使用我正在使用的代码在TextBox中显示响应:

    public async Task<string> Request(string uri)
    {
        WebRequest request = WebRequest.Create(uri);
        request.Credentials = CredentialCache.DefaultCredentials;
        HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
        Stream dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();
        return responseFromServer;
    }

如果我在我的机器上本地运行这个应用程序(网络服务器是localhost),那么每件事情都可以。但如果我在平板电脑上运行它,我会得到以下例外:

  

System.Net.WebException:无法连接到远程服务器---&gt;   System.Net.Sockets.SocketException:Der Zugriff auf einen Socket war   aufgrund der Zugriffsrechte desSocketsunzulässig10.0.0.146:80   (翻译:访问套接字禁止访问套接字   套接字的权限)

     

在System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)\ r \ n   在System.Net.ServicePoint.ConnectSocketInternal(布尔值   connectFailure,Socket s4,Socket s6,Socket&amp; socket,IPAddress&amp;   地址,ConnectSocketState状态,IAsyncResult asyncResult,   异常和放大器;例外)\ r \ n ---内部异常堆栈跟踪结束   --- \ r \ n在System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)\ r \ n at   System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction,Action 1 endAction, Task 1 promise,Boolean   requiresSynchronization)\ r \ n ---以前的堆栈跟踪结束   抛出异常的位置--- \ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)\ r \ n at   System.Runtime.CompilerServices.TaskAwaiter 1.GetResult()\r\n at WaWiDemoWin8.ServerRequest.<Request>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter 1.GetResult()\ r \ n at   WaWiDemoWin8.MainPage.d__0.MoveNext()“

请注意,浏览器可以访问网络服务器,如果我下载像google.com这样的在线网页,它可以正常工作(从平板电脑上)。我甚至在另一台计算机上安装了一个新的网络服务器来测试它,但是当我尝试在我们的局域网中访问这个网络服务器时,只能得到相同的异常。

我希望,至少有人可以给出解决方案或暗示,因为我真的不知道问题导致了什么。如果您需要更多信息,请告诉我,我会尽快提供。

谢谢你, 丹尼尔

1 个答案:

答案 0 :(得分:1)

我假设这是一个商店应用。考虑到这一点,您的应用看起来没有访问网络的权限。

如果你读了{​​{3}},你会看到:

  

当您在Visual Studio中开发和测试Windows Phone Store应用程序应用程序时,即使您未在此处指定此功能,也可以在运行应用程序时获得网络功能(Internet(客户端和服务器))。应用清单文件。但是,当您发布应用程序时,您的应用程序不会自动获得网络功能。如果您的应用需要网络连接,请确保在Manifest Designer的Capabilities页面上检查Internet(客户端和服务器)功能。

您需要在应用清单中为应用功能添加一个网络权限。