【问题标题】:Creating RESTful architecture to communicate between ASP.NET web app and MVC 3 App using JSON创建 RESTful 架构以使用 JSON 在 ASP.NET Web 应用程序和 MVC 3 应用程序之间进行通信
【发布时间】:2013-06-15 21:34:41
【问题描述】:

我需要从我的 asp.net 网络应用程序中获取 GET 字段(名字和姓氏)。它需要使用 JSON 将数据从前端(asp.net Web 应用程序)发送到 MVC 3 应用程序。 MVC 3 App 将与数据库通信,检索值并将它们序列化为 json 对象并 POST 到前端(ASP.NET Web 应用程序)。谁能用示例代码解释我将如何完成此操作?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 rest


    【解决方案1】:

    您可以使用WebClient 类。它允许您向任何 Web 应用程序发送 HTTP 请求。就 JSON 部分而言,您将需要一个 JSON 序列化程序。您可以使用内置的JavaScriptSerializer 类或第三方,例如Json.NET

    假设您在 ASP.NET MVC 3 应用程序中有以下要调用的控制器操作:

    [HttpPost]
    public ActionResult Foo(Bar bar)
    {
        ...
        return Json(new 
        {
            status = "OK"
        });
    }
    

    Bar 类包含一些属性(可以是简单或复杂类型):

    public class Bar
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
    

    现在您可以从客户端这样调用它:

    using (var client = new WebClient())
    {
        client.Headers[HttpRequestHeader.ContentType] = "application/json";
        var serializer = new JavaScriptSerializer();
        var json = serializer.Serialize(new 
        {
            firstName = "first",
            lastName = "last"
        });
        var resultJson = client.UploadString("http://example.com/foo", json);
        var result = serializer.Deserialize<Result>(resultJson);
    }
    

    您将在其中定义 Result 类以匹配应用程序返回的 JSON 结构:

    public class Result
    {
        public string Status { get; set; }
    }
    

    【讨论】:

    • 非常感谢您给我一个清晰的想法。我已经完成了您提供的步骤,但是当我同时运行 MVC 应用程序和客户端时,它会在此行(client.Uploadstring(“localhost:3198/Foo",json)”向我抛出 404 Not Found 错误。你知道它为什么会发生吗?
    • @Krishh,也许您还没有配置您的 asp.net mvc 应用程序以便它响应 /foo。这完全取决于您的路由设置。您可能还需要指定控制器名称:/home/foo
    • 我想这是我犯的错误。哇成功了!非常感谢您非常清楚地向我解释了该过程。谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 2011-07-29
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多