为了为我的公司开发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,Action1 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.TaskAwaiter1.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这样的在线网页,它可以正常工作(从平板电脑上)。我甚至在另一台计算机上安装了一个新的网络服务器来测试它,但是当我尝试在我们的局域网中访问这个网络服务器时,只能得到相同的异常。
我希望,至少有人可以给出解决方案或暗示,因为我真的不知道问题导致了什么。如果您需要更多信息,请告诉我,我会尽快提供。
谢谢你, 丹尼尔
答案 0 :(得分:1)
我假设这是一个商店应用。考虑到这一点,您的应用看起来没有访问网络的权限。
如果你读了{{3}},你会看到:
当您在Visual Studio中开发和测试Windows Phone Store应用程序应用程序时,即使您未在此处指定此功能,也可以在运行应用程序时获得网络功能(Internet(客户端和服务器))。应用清单文件。但是,当您发布应用程序时,您的应用程序不会自动获得网络功能。如果您的应用需要网络连接,请确保在Manifest Designer的Capabilities页面上检查Internet(客户端和服务器)功能。
您需要在应用清单中为应用功能添加一个网络权限。