私はWCF
サービスを持っています。AJAX
を使用して、Webアプリケーションからサービスメソッドを呼び出しています。私のAJAX
コールは以下の通りです。クライアント側のWCFサービスから返されたnullを処理します
$.ajax({
type: 'GET',
url: 'http://localhost:56083/Service1.svc/Web/GetIntegrationById?id=' + value,
dataType: 'json',
processData: true,
contentType: "application/javascript",
success: function (data) {
console.log(data);
},
failure: function (data) {
console.log("Failed " + data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
}
})
この呼び出しは、検索機能を実装するために使用されています。 WCF
サービスには、上記で呼び出されている以下のメソッドが含まれています。私は、検索テキストボックスに1~5の間の値を入力したときに下記
public Integration GetIntegrationById(string id)
{
IntegrationList integrationList = new IntegrationList();
Integration integration;
integration = integrationList.CreateIntegrations().Where(i => id != null && i.IntegrationId == Convert.ToInt16(id)).FirstOrDefault();
return integration;
}
CreateIntegrations()
方法。(テスト目的のために作成された)
public Integration[] CreateIntegrations()
{
List<Integration> integrationList = new List<Integration>()
{
new Integration() { IntegrationId=1,... },
new Integration() { IntegrationId=2, ... },
new Integration() { IntegrationId=3, ... },
new Integration() { IntegrationId=4, ... },
new Integration() { IntegrationId=5, ... }
};
Integrations = integrationList;
return integrationList.ToArray();
}
は、今はそれぞれの統合オブジェクトを取得します。しかし、上記のリストにないもの、例えばid = 8を入力すると、予想通りに、Webメソッドから返される統合の値はnullになります。これにより、クライアント側でパーサーエラーが発生するのは、JSON
という値が予想され、解析に失敗したnullが返されます。そこで最後の行を
return integration ?? new Integration();
これは、クライアント側でnull以外の値を受け取ることを希望して行われました。ただし、これは以下のエラーで失敗します。
私がここで間違って物事の十分にやっているかもしれませんが、私はサービスメソッドから返されたときにnull値を処理/管理する方法を知っておく必要があります。要求されたアイテムが存在しないシナリオをどうやって処理するのですか?どんな助けもありがたい。ありがとう。
よりもむしろ 'Integration'クラスを返す、[HttpResponseMessage]を返す(https://msdn.microsoft.com/en-us/library/system.net.http.httpresponsemessage(V = vs.118 ).aspx)また、 'contentType:" application/json "、' – Sajal
@ Sajalを設定してください。実際、これは私が別の開発者が作業している別のサービスを作成したモックサービスです。そして、このサービスはWebアプリケーションとWindowsアプリケーションの両方を提供するので、実際にはできません。 – Akshatha
'integration'がnullの場合に例外をスローして、クライアント側でそれがどのように受け取られるのか見ることができます。 – Sajal