C# 如何检查ComputerName是否为INT

C# 如何检查ComputerName是否为INT,c#,web-services,uwp,windows-10,C#,Web Services,Uwp,Windows 10,我想我累了,或者盯着这个看太久了。。我需要第二副眼睛。如果有什么事情看起来太冗长,请告诉我 我的目标 检查本地计算机名,如果是INT,则将其添加到HTTPClient请求,以从WebService返回相关值。FYI-HostName是此特定表的ID值。但是,如果值为NOT和INT,那么我想用一个假值替换实际值,这样我就可以正确地查看页面加载 最后,在客户的环境中,如果运行此页面的本地计算机不是正确组的一部分,我将关闭此页面的显示。这样他们就根本看不到这个配置页面 实际结果 因为我正在运行应用程序

我想我累了,或者盯着这个看太久了。。我需要第二副眼睛。如果有什么事情看起来太冗长,请告诉我

我的目标 检查本地计算机名,如果是INT,则将其添加到HTTPClient请求,以从WebService返回相关值。FYI-HostName是此特定表的ID值。但是,如果值为NOT和INT,那么我想用一个假值替换实际值,这样我就可以正确地查看页面加载

最后,在客户的环境中,如果运行此页面的本地计算机不是正确组的一部分,我将关闭此页面的显示。这样他们就根本看不到这个配置页面

实际结果 因为我正在运行应用程序的当前VM的名称没有INT,所以当我输入断点检查值时,会得到以下结果。但我仍然可以访问localhost:2463/api/devices/101070701并查看JSON结果。所以我只需要让UWP放置好,这样我就可以在应用程序中看到它

主机名=0

_HostName=LOCALVM\u ComputerName

设备服务

    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;
公共类设备页面视图模型:视图模型库
{
私有字符串_Hostname=DeviceIDService.Instance.LocalName;
公共字符串主机名{get;set;}
公共覆盖异步OnNavigatedToAsync()
{
int主机名;
bool isNumeric=int.TryParse(_主机名,out主机名);
如果(isNumeric==true)
{
主机名=101070701;
}
其他的
{
字符串hostName=hostName.ToString();
}
var uriD=新Uri(“http://localhost:2463/api/Devices/“+主机名);
HttpClient=新的HttpClient();
尝试
{
var JsonResponseD=await client.GetStringAsync(uriD);
var DeviceResult=JsonConvert.DeserializeObject(JsonResponseD);
设备=设备结果;

因为Serge实际上并没有提供答案,而是提供了一条评论。我想展示他提供的解决我问题的方法。这是我修复的方法。我更改了一些值,但这对我有效

  • _主机名-从pc获取实际计算机名时设置
  • hostName-如果是INT,则将设置为_hostName
  • 主机名-如果实际名称不是INT,则将更改为101070701
  • 主机名-如果ComputerName为INT,则不显示主机名

    int hostName;
    bool isNumeric = int.TryParse(_Hostname, out hostName);
    if (!isNumeric) {HostName = 101070701}
    else
    {
        HostName = hostName;
    }
    

如果(!isNumeric){HostName=101070701;}?我对这一切还是有点陌生…但你的建议似乎会将包含所有数字的任何主机名的值更改为101070701,对吗?我想让它做的是,如果它是一个数字,让它通过,如果它是其他的,那么将它更改为101070701。不,建议只将非数字值更改为101070701。int.TryParse将返回
true
。请注意if语句中的感叹号:
if(!isNumeric)
;这相当于if isNumeric为false。这是一个.ok..我会尝试的..谢谢Serge。如果计算机名是
999999999999999