您需要根据需要将应用程序配置为需要一项或两项必要功能:
互联网客户端服务器
您的 Internet 连接,包括来自 Internet 的未经请求的传入连接 - 该应用程序可以通过防火墙将信息发送到您的计算机或从您的计算机发送信息。如果声明了此功能,则无需声明 internetClient。
私有网络客户端服务器
家庭或工作网络——该应用程序可以向您的计算机和同一网络上的其他计算机发送信息或从您的计算机和其他计算机发送信息。
(来自http://msdn.microsoft.com/en-us/library/windows/apps/br211423.aspx上的文档)
有关功能如何工作的更多信息,另请参阅本文:http: //msdn.microsoft.com/en-us/library/windows/apps/hh464936.aspx
互联网和公共网络
internetClient 功能提供通过防火墙对 Internet 和公共网络的出站访问。几乎所有 Web 应用程序都使用此功能。internetClientServer 功能提供通过防火墙对 Internet 和公共网络的入站和出站访问。
家庭和工作网络
privateNetworkClientServer 功能提供通过防火墙对家庭和工作网络的入站和出站访问。此功能通常用于跨局域网 (LAN) 进行通信的游戏,以及跨各种本地设备共享数据的应用程序。如果您的应用指定了musicLibrary、picturesLibrary 或videoLibrary,则无需使用此功能来访问家庭组中的相应库。
您需要在包清单中声明您的应用需要(因此可以访问)哪些功能。这是有关如何执行此操作的分步指南:http: //msdn.microsoft.com/en-us/library/windows/apps/br211477.aspx
您可以使用 Visual Studio 中的清单设计器来编辑这些功能。只需在名为的解决方案中找到并打开该文件,package.appxmanifest
Manifest Designer 就会打开。
选择功能选项卡和您的应用所需的网络相关功能,您应该一切顺利。
链接到有关 App Manifest Designer 的文档:http: //msdn.microsoft.com/en-us/library/windows/apps/br230259 (v=vs.110).aspx
关于最后一段
如果有这个异常的处理程序,程序可以安全地继续。
它只是说您可以使用StreamSocketListener
try-catch 块包装您的代码。如果您想在应用程序中优雅地处理缺失的功能,这是一件好事:
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
StreamSocketListener listener = new StreamSocketListener();
greetingOutput.Text = "Hello, " + nameInput.Text + "!";
}
catch(UnauthorizedAccessException exc)
{
// Act on the missing capability. Log it and/or warn the user.
}
}