解決:getWeatherbyCityName(city),服務器沒法處理請求。 ---> 未將對象引用設置到對象的實例。

原文: getWeatherbyCityName(city),服務器沒法處理請求。 ---> 未將對象引用設置到對象的實例。 web

解決方法:不要直接使用 「服務引用」 , 添加爲 「Web 引用」小程序

       最近用C#在winform中作一個天氣預報的小程序,在網上搜了不少資料,包括現成的程序,如http://blog.csdn.net/qishuangquan/article/details/6039287,但運行到getWeatherbyCityName(city),都會出錯,提示服務器沒法處理請求。 ---> 未將對象引用設置到對象的實例。在網上搜索該問題的緣由,也沒找到答案,懷疑.NET Framework版本的問題,換了3.0、3.五、4.0都同樣,固然2.0是沒有Service Reference的,但有Web Reference,在Web Reference上添加webservice地址,修改weathertest.Weather.WeatherWebServiceSoapClient w = new weathertest.Weather.WeatherWebServiceSoapClient("WeatherWebServiceSoap");爲weathertest.Weather.WeatherWebService webc = new weathertest.Weather.WeatherWebService();調試竟然成功了,後來想.NET Framework4.0中有沒有Web Reference,在網上搜了下找到了,原來Web Reference須要這樣設置纔出現:數組

⑴在須要調用WebService的項目上,點擊鼠標右鍵,選擇添加Service Reference,進入'Add Service Reference‘界面服務器

⑵點擊'Advanced'按鈕,進入'Service Reference Settings'界面測試

⑶點擊'Add Web Reference'按鈕,進入'Add Web Reference'界面this

  ①在'URL'文本框中,填寫須要引用的WebService的地址(例如:http://www.webxml.com.cn/WebServices/WeatherWebService.asmxspa

  ②點擊右邊的綠色方框按鈕,程序會自動前往給定的地址查找WebService服務.net

  ③在'Web Reference Name'文本框中,自定義這次添加的WebService的名稱(例如:Weather)調試

  ④點擊'Add  Reference'按鈕,程序自動將找的WebService添加的當前的項目中,並自動放在Web References文件夾中.orm

本身寫了個程序,測試成功,主要代碼以下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.ServiceModel;
using System.Runtime.InteropServices;

namespace weather2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                weather2.Weather.WeatherWebService webc = new weather2.Weather.WeatherWebService();
                string[] s = new string[23];//聲明一個string數組存放其返回的結果
                string city = this.textBox1.Text.Trim();//得到文本框1的內容
                s = webc.getWeatherbyCityName(city);
                MessageBox.Show("西安氣象:" + "\r\n" +"天氣:" +s[6] + "\r\n" + "溫度:" + s[5]);
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.ToString());
            }
        }
    }
}

測試圖見下:


     回到」服務器沒法處理請求。 ---> 未將對象引用設置到對象的實例「這個問題,估計是VS版本的問題,由於網上看人家用的是VS2008,但我用的是VS2010,無論怎麼樣,這個問題仍是給了個交代,能夠安照上面的方法訪問天氣WebService。

相關文章
相關標籤/搜索