1

Bing の Geocoding soap サービスを使用する wcf サービスを作成しようとしています。しかし、コンストラクターを使用して新しい GeoCodeRequest を初期化しようとすると、null が返されます。を呼び出すrequest.Query = address; と、 を参照して null 値エラーが発生し requestます。

public string RequestLocation(string address)
        {
            const string key = "mybingapplicationId";
            var request = new GeocodeRequest();
            request.Credentials.ApplicationId = key;
            request.Query = address;

            var filters = new ConfidenceFilter[1];
            filters[0] = new ConfidenceFilter { MinimumConfidence = Confidence.High };

            var geocodeOptions = new GeocodeOptions { Filters = filters };

            request.Options = geocodeOptions;

            // Make the geocode request
            var geocodeService = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
            var geocodeResponse = geocodeService.Geocode(request);

            return geocodeResponse.Results[0].DisplayName;
        }

[単体テスト]

 [TestMethod()]
        [HostType("ASP.NET")]
        [AspNetDevelopmentServerHost("C:\\Development\\WcfService1\\WcfService1", "/")]
        [UrlToTest("http://localhost:24842/")]
        [DeploymentItem("WcfService1.dll")]
        public void RequestLocationTest()
        {
            var target = new TestService.BingEngineClient();
            var address = string.Format("1600 Pennsylvania Avenue, {0}, {1}","Washington", "DC"); 
            var expected = string.Empty;
            var actual = target.RequestLocation(address);
            Assert.IsNotNull(actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
4

2 に答える 2

1

まず、コードに資格情報の初期化がありません。

request.Credentials = new GeocodeService.Credentials();

Bing マップ アカウントの作成を行うときは、アプリケーションを使用して、問題の特定のアプリケーション
の Bing マップ キーを作成する必要があります。これはアカウント キーとは異なることに注意してください。

于 2012-04-19T18:05:53.890 に答える
0
    public string RequestLocation(string address)
            {

                var request = new GeocodeRequest {Credentials = new Credentials {ApplicationId = _key}, Query = address};
                var filters = new ConfidenceFilter[1];
                filters[0] = new ConfidenceFilter { MinimumConfidence = Confidence.High };

                var geocodeOptions = new GeocodeOptions { Filters = filters };

                request.Options = geocodeOptions;

                // Make the geocode request
                var geocodeService = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
                var geocodeResponse = geocodeService.Geocode(request);

                return string.Format("Longitude:{0},Latitude:{1}", geocodeResponse.Results[0].Locations[0].Longitude,
                                     geocodeResponse.Results[0].Locations[0].Latitude);
            }
于 2012-04-19T18:10:27.743 に答える