c# - JSON 与 ASP 返回错误

标签 c# asp.net json asp.net-mvc

我们正在使用由外部供应商编写的 ASP 应用程序。我的任务是对应用程序进行一些小改动,但是我对 asp 或 json 一无所知。通过一些研究,我把这些放在一起。我在表单上创建了一个文本框,我想将客户端 IP 地址返回到该文本框。我写了一个函数然后是一个 Controller 。两者的代码如下:

函数

function processgetip(event) {
    // Within this function, make an AJAX call to get the IP Address
    $.getJSON('@Url.Action("GetIPAddress","getipaddress")', function (ip) {
        // When this call is done, your IP should be stored in 'ip', so
        // You can use it how you would like

        // Example: Setting a TextBox with ID "YourElement" to your returned IP Address
        $("#facility").val(ip);
    });
}

Controller

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Http;
    using System.Web;
    using System.Web.Mvc;

    namespace Parker_Hannifin.Controllers
    {
    public class getipaddressController : ApiController
{
    public JsonResult GetIPAddress()
    {

        System.Web.HttpContext context = System.Web.HttpContext.Current;

        string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (!string.IsNullOrEmpty(ipAddress))
        {
            string[] addresses = ipAddress.Split(',');
            if (addresses.Length != 0)
            {
                //return addresses[0]; //
                ipAddress = addresses[0];
            }
        }

        //replace ipaddress with ipAddress
        return Json(ipAddress, JsonRequestBehavior.AllowGet);
    }


}
    }

我在这行代码中遇到了这些错误:

返回 Json(ipAddress, JsonRequestBehavior.AllowGet);

我得到的错误是:

The best overloaded method match for System.Web.Http.ApiController.Json(string, Newtonsoft.Json.JsonSerializerSettings) has some invalid arguments. Cannot convert from System.Web.Mvc.JsonRequestBehavior to Newtonsoft.Json.JsonSerializerSettings

如果有人能告诉我它们的含义以及如何修复它们,我将不胜感激。

最佳答案

ApiController 中的

Json 具有两个参数的签名,

protected internal JsonResult<T> Json<T>(
T content,
JsonSerializerSettings serializerSettings
)
Controller 中的

Json 具有两个参数的签名,

protected internal JsonResult Json(
object data,
JsonRequestBehavior behavior
)

getipaddressController继承自ApiController,但是你使用了Controller方法Json。使用,

return new JsonResult()
{
 Data = ipAddress,
 JsonRequestBehavior = JsonRequestBehavior.AllowGet
};

如果您仍然想要这种行为。

关于c# - JSON 与 ASP 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36285625/

相关文章:

c# - FK 上的 Linq 值不能为空

c# - 正则表达式 C# 如何

javascript - 我如何在多个用户控件中使用 pageLoad 函数

javascript - AngularJS:无法从 REST 查看数据

c# - JSON 不反序列化

c# - NHibernate 和 C# : error using nested properties with Criteria

jquery - asp.net mvc文件上传ajax帖子

.net - 将附件添加到.NET电子邮件

javascript - 从平面数组创建嵌套对象

c# - 桌面上的 UWP 由顶部 X 按钮关闭 - 无事件