Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无浏览器或视图的mvc客户端访问_C#_Asp.net Mvc_Web Services_Asp.net Mvc 4 - Fatal编程技术网

C# 无浏览器或视图的mvc客户端访问

C# 无浏览器或视图的mvc客户端访问,c#,asp.net-mvc,web-services,asp.net-mvc-4,C#,Asp.net Mvc,Web Services,Asp.net Mvc 4,我有一个MVC4C#应用程序,我希望允许客户端通过代码(无浏览器或视图)进行访问。客户端将发送一个用于查找记录的用户ID,并返回三个字段。传入和传出数据都是敏感信息,因此我需要一个安全的解决方案。应用程序运行在一个带有SSL(https)的站点上,如果我使用JSON解决方案(如两个答案所示),这会保护我免受JSON劫持吗 public ActionResult InAction(string id) { // code to retrieve record and return three

我有一个MVC4C#应用程序,我希望允许客户端通过代码(无浏览器或视图)进行访问。客户端将发送一个用于查找记录的用户ID,并返回三个字段。传入和传出数据都是敏感信息,因此我需要一个安全的解决方案。应用程序运行在一个带有SSL(https)的站点上,如果我使用JSON解决方案(如两个答案所示),这会保护我免受JSON劫持吗

public ActionResult InAction(string id)
{ 
  // code to retrieve record and return three fields field1, field2, field3

  return (what would go here?)
}
我甚至可以使用控制器操作来处理这个问题吗?我需要一个完整的Web服务来完成这项工作吗?如果需要的话,任何指向好的MVC教程的链接都会有帮助吗

客户机在ASP(webforms)中工作,并且正在讨论一个带有键值对的响应程序页面,我如何在MVC中进行等效操作

非常感谢您对我的帮助

多谢各位

更新:我已将Brett的JSON建议标记为答案。我返回一个字符串(不是数组),整个事务通过SSL连接进行,因此我相信JSON劫持的可能性不是问题

  string response = field1 + "," + field2 + "," + field3;
  return Json(response), JsonRequestBehavior.AllowGet; }

如果我错了,请告诉我。

这取决于您希望返回数据的格式。例如,如果希望以JSON格式返回数据,可以使用以下命令:

return (Json(userResultModel));

您可能还希望将方法的返回类型更改为JsonResult。

正如nikeaa所提到的,只需在控制器中创建一个返回JsonResult的操作即可

public JsonResult InAction(string id)
{
    // get some object from repository
    var repository = new ObjectRepository();
    var returnObj = repository.GetObject(id);
    return Json(returnObj, JsonRequestBehavior.AllowGet);
}

您需要指定jsonrequestbehavior.AllowGet来覆盖默认的.DenyGet。但是,当返回带有GET请求的JSON时,这会打开一个安全漏洞

谢谢你,布雷特。我应该提到运行应用程序的站点是https(ssl),我将返回敏感信息。因为我不能在JsonResult上使用[HttpPost],所以我必须使用.AlllowGet。我不同意你的意见,我应该使用它的安全原因,不是吗。AllowGet什么使它容易受到JSON劫持?该链接表示“您不希望在GET请求中使用JSON返回敏感信息。”我如何安全地将敏感信息返回给客户端?SSL会保护我免受JSON劫持吗?@Joe,我已经编辑了我的回复,我只是说你需要那个参数来覆盖默认行为。我不是专家,但我会尽量避免向客户端发送敏感数据,除非它们经过身份验证,我认为通过SSL更好。另外,为了避免JSON劫持,我认为一种方法是确保响应封装在对象中,而不是数组中。我觉得上面的措辞仍然让人困惑。我冒昧地编辑了你的回复,使之更清楚。谢谢你,我投了赞成票,但没有点击箭头。现在完成,再次感谢。您可能希望使用具有ws*协议的wcf服务来提供JSON数据。