【问题标题】:Using MVC 4 as Web Service使用 MVC 4 作为 Web 服务
【发布时间】:2013-09-02 15:36:00
【问题描述】:

我现在正在尝试构建基于 MVC 4 的 Web 服务和使用 HTML 的客户端。问题是我的 HTML 文件放在应用程序之外,而我的 MVC 服务在 Visual Studio IIS Express 上运行。我不知道这是否会导致我的问题或 Web.config 中缺少任何内容。

这是我在控制器中的 Index 方法代码:

public ActionResult Index() {
    return Content("It works");
}

这是我在客户端的代码:

$.ajax({
    url: 'http://localhost:54502/<MyControllerName>/Index',
    type: 'POST',
    datatype:"JSON",
    contentType:"application/json; charset=utf-8",
    success: function(data) {
        alert(data);
    },
    error: function(data) {
        alert("error");
    },
        complete: function(jqXHR,status) {          
    }
});

问题是它总是提醒“错误”,但似乎没有任何效果。任何帮助都将受到高度评价!

【问题讨论】:

  • 您是否尝试过在您的网络浏览器中导航到该 URL?你看到了什么?
  • 完全没问题,并且完全返回字符串“It works”

标签: c# jquery json web-services asp.net-mvc-4


【解决方案1】:

内容未序列化为 JSON。如果是 HTML,它将是内容类型的 text/html 而不是 application/json。

我建议为此使用 WebAPI 或 WCF 的 WebHttpBinding。

【讨论】:

  • 我的本意是使用Json格式,比如return Json(new Object[] { "success", returnObj }, JsonRequestBehavior.AllowGet);但它不起作用,所以我必须像上面那样编写简单的测试用例,它似乎也不起作用。
  • 如果您查看 Fiddler2 或其他工具中的响应,您会看到该消息将具有内容类型 html。您应该考虑使用为 Web 服务构建的 WebAPI,或 WCF 的 WebHttpBinding,它可以自动将您的对象序列化为 JSON 或 XML 以供使用。
  • 有没有办法用 MVC 4 编写 Web 服务?
  • WebAPI 是 ASP.NET MVC 4 的扩展。(asp.net/web-api)。不同的工具最好在不同的情况下使用。幸运的是,C# 和 ASP.NET 为我们提供了这样的选择。知道什么时候使用重要的东西。
  • 我找到了我的解决方案。我将在下面更新我的答案,感谢您的帮助。
【解决方案2】:

我想出了我的解决方案,它与跨域问题有关。我使用 WebAPI 并使用 NuGet 安装 CORS 包,现在我可以通过 ajax 调用访问 Web 服务,即使在我的 localhost 域之外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多