したがって、私はデバイスに関するデータを返すこのAPIを構築しました。私はとlocalYこのプロジェクトを実行すると、私の要求は私を与える結果が正しいです:私はアズールにこのプロジェクトを公開し、正確に同じ要求を行うとASP.net REST APIは、紺色の地方または地方の異なるデータを返します。
[
{
"Id": "1",
"Name": "x1",
"LocationName": "Floor 2"
},
{
"Id": "2",
"Name": "x2",
"LocationName": "Floor 2"
}
]
これは私が得るものです:
"Request": {
"AlwaysMultipartFormData": false,
"JsonSerializer": {
"DateFormat": null,
"RootElement": null,
"Namespace": null,
"ContentType": "application/json"
},
"XmlSerializer": {
"RootElement": null,
"Namespace": null,
"DateFormat": null,
"ContentType": "text/xml"
},
"ResponseWriter": null,
"UseDefaultCredentials": false,
"Parameters": [
{
"Name": "Accept",
"Value": "application/json, application/xml, text/json, text/x-json, text/javascript, text/xml",
"Type": 3,
"ContentType": null
}
],
"Files": [],
"Method": 0,
"Resource": "devices",
"RequestFormat": 1,
"RootElement": null,
"OnBeforeDeserialization": {
"Delegate": {
"type": "System.Action`1[[RestSharp.IRestResponse, RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null]]",
"assembly": "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"target": null,
"targetTypeAssembly": "RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null",
"targetTypeName": "RestSharp.RestRequest",
"methodName": "<.ctor>b__0",
"delegateEntry": null
},
"method0": {
"Name": "<.ctor>b__0",
"AssemblyName": "RestSharp, Version=105.2.3.0, Culture=neutral, PublicKeyToken=null",
"ClassName": "RestSharp.RestRequest",
"Signature": "Void <.ctor>b__0(RestSharp.IRestResponse)",
"Signature2": "System.Void <.ctor>b__0(RestSharp.IRestResponse)",
"MemberType": 8,
"GenericArguments": null
}
},
"DateFormat": null,
"XmlNamespace": null,
"Credentials": null,
"UserState": null,
"Timeout": 0,
"ReadWriteTimeout": 0,
"Attempts": 1
},
"ContentType": "application/json; charset=utf-8",
"ContentLength": -1,
"ContentEncoding": "",
"Content": "[\r\n {\r\n \"$id\": \"1\",\r\n \"id\": \"1\",\r\n \"name\": \"x1\",\r\n \"deviceTypeName\": \"Brickstream\",\r\n \"lastSeen\":....
それHttpResponseMessageオブジェクトの文字列表現のように見えます。内容の下で見ることができるように、私はローカルでリクエストをした時と同じ出力をしています。今質問です、私はここで何が間違っていますか?
コード:
[Route("")]
public HttpResponseMessage GetAllDevicesLocation(string location)
{
var request = new RestRequest();
request = new RestRequest($"devices", Method.GET);
IRestResponse response = client.Execute(request);
string serializedItemsFromBackend = response.Content;
var deserializedItemsFromBackend = JsonConvert.DeserializeObject<List<DeviceModels>>(serializedItemsFromBackend);
List<DeviceModels> list = new List<DeviceModels>();
foreach (DeviceModels device in deserializedItemsFromBackend)
{
if (device.LocationName.Equals(location))
{
list.Add(device);
}
}
if (list.Count > 0)
{
return CreateResponse(JsonConvert.SerializeObject(list));
}
return Request.CreateResponse(HttpStatusCode.NotFound, "Devices in that area wasn't found.");
}
私は、これは昨日働いたことを誓うことができます。私の他のエンドポイントは、うまく動作する。..
EDITこのエンドポイントは、ローカルおよび紺碧の上に私に正しい結果が得られます::
[Route("{name}")]
public HttpResponseMessage GetDevice(string name)
{
var request = new RestRequest();
request = new RestRequest($"devices", Method.GET);
IRestResponse response = client.Execute(request);
string serializedItemsFromBackend = response.Content;
var deserializedItemsFromBackend = JsonConvert.DeserializeObject<List<DeviceModels>>(serializedItemsFromBackend);
foreach (DeviceModels device in deserializedItemsFromBackend)
{
if (device.Name.Equals(name))
{
return CreateResponse(JsonConvert.SerializeObject(device));
}
}
return Request.CreateResponse(HttpStatusCode.NotFound, "Device with that name wasn't found.");
}
これはWebアプリケーションなのですか? – Kamo
WebAppです.- – knuddan
コンテンツタグを抽出し、その特定のタグに対して逆シリアル化を使用する必要があります。またはデシリアライゼーションを修正してレスポンス処理も含める必要があります –