Errore di restituzione JSON con ASP

Stiamo usando un’app ASP scritta da un fornitore esterno. Ho il compito di apportare una piccola modifica all’app ma non so nulla di asp o json. Attraverso alcune ricerche ho messo insieme questo. Ho creato una casella di testo nel modulo e voglio restituire l’indirizzo IP del client a quella casella di testo. Ho scritto una funzione quindi un controller. Il codice per entrambi è qui sotto:

La funzione

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); }); } 

Il 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); } } } 

Sto ottenendo questi errori su questa riga di codice:

return Json(ipAddress, JsonRequestBehavior.AllowGet);

L’errore che ottengo è:

La migliore corrispondenza del metodo sovraccarico per System.Web.Http.ApiController.Json (string, Newtonsoft.Json.JsonSerializerSettings) presenta alcuni argomenti non validi. Imansible convertire da System.Web.Mvc.JsonRequestBehavior a Newtonsoft.Json.JsonSerializerSettings

Se qualcuno potesse dirmi cosa intendono e come risolverli lo apprezzerei molto.

Json in ApiController con due parametri ha una firma di,

 protected internal JsonResult Json( T content, JsonSerializerSettings serializerSettings ) 

Json in Controller con due parametri ha una firma di,

 protected internal JsonResult Json( object data, JsonRequestBehavior behavior ) 

getipaddressController ereditato da ApiController , ma hai usato il metodo Controller Json . Uso,

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

Se vuoi ancora il comportamento.

utilizzare ActionResult anziché JsonResult

 public ActionResult GetIPAddress() { } 

puoi vedere un esempio qui