【发布时间】:2017-04-23 04:08:18
【问题描述】:
我觉得我累了,或者盯着这个看太久了。我需要第二双眼睛。如果有任何事情看起来太啰嗦,请告诉我。
我的目标 检查本地计算机名称,如果它是 INT,然后将其添加到 HTTPClient 请求以从 WebService 返回相关值。仅供参考 - HostName 是此特定表的 ID 值。但是,如果该值不是和 INT,那么我想用一个假值替换实际值,这样我就可以看到我的页面加载正确。
最终,在客户的环境中,如果运行它的本地计算机不是正确组的一部分,我将关闭此页面的显示。这样他们就根本看不到这个配置页面了。
实际结果 因为我正在运行应用程序的当前 VM 没有名称的 INT,所以当我放入断点以检查值时,我得到以下信息。但是我仍然可以访问 localhost:2463/api/devices/101070701 并查看 JSON 结果。所以我只需要让 UWP 放置好,这样我就可以在 APP 中看到它。
主机名 = 0
_HostName = LOCALVM_ComputerName。
DeviceIDService
public class DeviceIDService
{
public static DeviceIDService Instance = new DeviceIDService();
private DeviceIDService()
{
foreach (HostName DisplayName in NetworkInformation.GetHostNames())
{
if (DisplayName != null)
{
var hostNames = NetworkInformation.GetHostNames();
var hostName = hostNames.FirstOrDefault(name => name.Type == HostNameType.DomainName)?.DisplayName ?? "???";
LocalName = hostName;
break;
}
}
public string LocalName { get; set; }
}
}
DevicePageViewModel
public class DevicePageViewModel : ViewModelBase
{
private string _Hostname = DeviceIDService.Instance.LocalName;
public string hostName { get; set; }
public override async OnNavigatedToAsync ()
{
int HostName;
bool isNumeric = int.TryParse(_Hostname, out HostName);
if (isNumeric == true)
{
HostName = 101070701;
}
else
{
string hostName = HostName.ToString();
}
var uriD = new Uri("http://localhost:2463/api/Devices/" + HostName);
HttpClient client = new HttpClient();
try
{
var JsonResponseD = await client.GetStringAsync(uriD);
var devicesResult = JsonConvert.DeserializeObject<List<Device>>(JsonResponseD);
Devices = devicesResult;
【问题讨论】:
-
不应该是
if (!isNumeric){HostName = 101070701;}吗? -
我对这一切还是有点陌生...但是您的建议似乎会将包含所有数字的任何主机名的值更改为 101070701,对吗?我想要它做的是,如果它是一个数字,让它通过,如果它是其他任何东西,那么将它更改为 101070701。
-
否,该建议只会将非数字值更改为 101070701。如果值为数字,
int.TryParse将返回true。注意 if 语句中的感叹号:if(!isNumeric);这相当于如果 isNumeric 为假。这是working example。 -
好的.. 我会试试的.. 谢谢 Serge。
-
如果计算机名是
999999999999999怎么办?
标签: c# web-services uwp windows-10