0

javascript を介してクエリしている XML ドキュメント (HTTP キャッシュに格納されている) をクエリする 2 つの単純な webservice メソッドがあります。このGetCitiesForAffiliate()メソッドは、aff パラメーターに完全に有効なデータ項目を 1 つ渡すと、「select new」行で NullReferenceException をスローしています。aff パラメータの他のデータに対しては正常に機能します。他のメソッドを爆破させる同じ aff パラメータを使用しても、他のメソッドも正常に機能します。

照会している XML を検証しました。どちらのメソッドも、存在しない aff を渡すと、空の json 文字列を返すだけです。これで問題ありません。間違っている可能性があるのは何を見ればよいですか?

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string GetCitiesForAffiliate(string aff)
    {
        LocationService loc = new LocationService();
        var query = (from center in loc.centersXml.Descendants("Center")
                     where center.Element("ServiceArea").Value.Equals(aff)
                     select new {
                         City = center.Element("City").Value
                     }).Distinct().OrderBy(x => x.City);

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string json = serializer.Serialize(query);

        return json;
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string GetCentersForAffiliateCity(string aff, string city)
    {
        LocationService loc = new LocationService();
        var query = (from center in loc.centersXml.Descendants("Center")
                     where center.Element("ServiceArea").Value.Equals(aff) && center.Element("City").Value.Equals(city)
                     select new { 
                         ID = center.Element("ID").Value,
                         Name = center.Element("Name").Value 
                     }).Distinct().OrderBy(x => x.Name);

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        string json = serializer.Serialize(query);

        return json;
    }
4

1 に答える 1

5

一部のノードで City 要素が欠落している場合、必要な出力に応じていくつかの選択肢があります。

City1)要素がnull次のとおりかどうかを確認するチェックを追加します。

City = (center.Element("City") == null ? null : center.Element("City").Value)

2) null 都市の要素を無視する where 句を追加します。

where center.Element("ServiceArea").Value.Equals(aff) 
    and center.Element("City") != null
于 2012-09-26T13:24:34.260 に答える