繁体   English   中英

如何在ASP.Net Web API上获取日期和时间?

[英]How to get date and time on ASP.Net Web API?

我是ASP.Net Web API的新手,想开发一个示例以获取日期时间。 我开发了两个应用程序。第一个是我拥有我的API并运行它以抛出Visual Studio,另一个是控制台应用程序来测试第一个。

在我的API上,我有:

public class DateTimeController : ApiController
{
   public DateTime Get()
    {
        return DateTime.Now;
    }
}

在我的控制台应用程序上我有这个,但是我不知道它是否正确,因为它不起作用:

  static void Main(string[] args)
    {
        string baseAddress = "http://localhost:13204/api/DateTime/get";

        using (HttpClient httpClient = new HttpClient())
        {
            Task<String> response =
             httpClient.GetStringAsync(baseAddress);

        }
        Console.ReadLine();
    }

快速观察响应:response.Status = WaitingForActivation
response.id = 4 response.AsyncState = null

WebApiConfig.cs

 public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }

RouteConfig.cs

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "DateTime", action = "Get", id = UrlParameter.Optional }
        );
    }
}

这里有几个问题。

HttpClient.GetStringAsync返回Task<string>但是您甚至没有将结果分配给变量(或者至少在第一次发布问题时才没有)。 使用返回任务的方法,您需要等待它们或等待它们,直到任务完成。 这里介绍了控制台应用程序中执行此操作的许多方法。 我将选择一个并向您展示如何实现它。

static void Main(string[] args)
{
    var cts = new CancellationTokenSource();

    System.Console.CancelKeyPress += (s, e) =>
    {
        e.Cancel = true;
        cts.Cancel();
    };

    MainAsync(args, cts.Token).Wait();
}

static async Task MainAsync(string[] args, CancellationToken token)
{
    string baseAddress = "http://localhost:13204/api/DateTime";

    using (var httpClient = new HttpClient())
    {
        string response = await httpClient.GetStringAsync(baseAddress);
    }
}

response变量将是一个字符串,其中包含用JSON包装的日期时间。 然后,您可以使用自己喜欢的JSON解析库(我喜欢Json.NET )来获取值。

请注意,无需在URL中指定特定的操作方法,因为我们发送了HTTP GET请求,并且由于该操作方法以“ Get”开头,因此该框架足够聪明,可以知道它应该映射到该操作方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM