【发布时间】:2018-09-07 06:11:46
【问题描述】:
我正在使用 Visual Studio 2017 开发 ASP.NET Core Api 和 Xamarin 表单客户端。
我遇到了一个错误
System.Runtime.Serialization.SerializationException:无效的 JSON 字符串
因为response.Content 为空,当从API 检索数据时,但当将此Url 粘贴到浏览器“https://localhost:44305/api/Agreement/GetAgreementText/1”时,它会在浏览器中显示数据。当我使用客户端运行时,它不会命中 api 方法调试点。
这是我的 APi 方法
[HttpGet]
[Route("GetAgreementText/{id}")]
public DefaultApiResult GetAgreementText(long Id)
{
Company com = _companyRepository.Get(Id);
string st = com.AgreementText;
DefaultApiResult result = new DefaultApiResult
{
Data = st
};
return result;
}
这是我的客户端应用Api调用方法
public string GetAgreementTextLoading(long idCompany)
{
string agreementText = "";
// var token = _tokenService.GetLastActivateToken().Hash;
var clientURL = "https://localhost:44305/";
var client = new RestClient(clientURL);
var request = new RestRequest("api/Agreement/GetAgreementText/{Id}", Method.GET);
request.AddUrlSegment("Id", idCompany.ToString());
IRestResponse response = client.Execute(request);
AppRestResponse apiResponse = SimpleJson.DeserializeObject<AppRestResponse>(response.Content);
var statusMessage = "";
if (apiResponse.Success)
{
statusMessage = "Success.";
if (!string.IsNullOrEmpty(response.Content))
{
agreementText = apiResponse.Data.ToString();
}
else
{
throw new Exception("Invalid response");
}
}
else
{
agreementText = "Error retrieving agreement text";
}
return agreementText;
}
public class AppRestResponse
{
public bool Success { get; set; }
public object Data { get; set; }
public IEnumerable<AppRestReponseError> ErrorMessages { get; set; }
}
public class DefaultApiResult
{
public bool Success
{
get
{
return ErrorMessages.Count == 0;
}
private set { }
}
public List<ErrorMessage> ErrorMessages { get; set; }
public object Data { get; set; }
public DefaultApiResult()
{
ErrorMessages = new List<ErrorMessage>();
}
public DefaultApiResult(string errorMessage)
:this()
{
ErrorMessages.Add(new ErrorMessage()
{
Message = errorMessage
});
}
public DefaultApiResult(string[] errorMessages)
:this()
{
foreach (var errorMessage in errorMessages)
{
ErrorMessages.Add(new ErrorMessage()
{
Message = errorMessage
});
}
}
}
【问题讨论】:
-
能否请您发布
DefaultApiResult和AppRestResponse的定义? -
我把它添加到我的问题中
-
您确定同时运行这两个项目吗?
标签: asp.net asp.net-web-api asp.net-core asp.net-core-webapi