Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# webapi序列化期间权限不足的解决方法_C#_.net_Asp.net Web Api - Fatal编程技术网

C# webapi序列化期间权限不足的解决方法

C# webapi序列化期间权限不足的解决方法,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,我有一个webapi,它输出的结果如下: [ { "Households": 3, "Municipality": "WC001", "Tenure status": "Owned and fully paid off", "Income category": "R 2 457 601 or more", "Computer": "No" }, ... 前两个项目(住户和市政)始终存在,随后的项目-可能有任意数量,至少一个 我可以使用服务器上的列表对

我有一个webapi,它输出的结果如下:

[
  {
    "Households": 3,
    "Municipality": "WC001",
    "Tenure status": "Owned and fully paid off",
    "Income category": "R 2 457 601 or more",
    "Computer": "No"
},
...
前两个项目(住户和市政)始终存在,随后的项目-可能有任意数量,至少一个

我可以使用服务器上的列表对象来生成它。但是,当我上传到共享托管环境时,我得到了错误: “ObjectContent”类型未能序列化内容类型“application/json”的响应正文;字符集=utf-8'。innerException请求“System.Security.Permissions.ReflectionPermission,mscorlib,Version=4.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败

我无法将web.config中的trustlevel更改为full,因为宿主公司已将其锁定

我认为这是因为动态对象需要反射来检查属性名,其他返回POCO的webapi调用可以正常工作

所以我试着把它从一个列表对象改成一个列表,但是我仍然得到同样的错误


是否有一种方法可以在不需要反射序列化的情况下创建这个“动态”对象

这是我刚刚发现的一个潜在解决方案:在Json字符串上构建结果,并将方法更改为HttpResponseMessage,然后直接返回字符串,避免使用Json.NET序列化程序,如下所示:

var sb = new StringBuilder();
...
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(sb.ToString(), Encoding.UTF8, "application/json");
return response;

与StringBuilder相比,我更喜欢使用对象/类,但这至少是可行的。

其他API调用是否也将POCO序列化为Json?是的,它们确实可以-效果绝对不错。所以我想他们也在使用反射,但是这里有些不同,属性名是动态的?