最近忙於一個Web的Bug修正,是先人寫的一個東東,架構很簡單,一個前端的項目,一個WebService的項目,以及后台的一些dll。之前一直很排斥這個產品,因為它沒法啟動,印象中沒有跑得起來過的時候。現在客戶那邊有問題,沒辦法,先人已不再,只能接手。
Web的東西好就好在運行時報錯,其實我感覺這反而有礙於開發。如對WebService的引用,明明引用已經過時了,但是編譯卻能過,跑起來就卡那,然后界面上給你來堆不知所雲的報錯。嘗試更新Web服務引用,失敗,404錯誤,把之前的引用卸了重新添加web服務引用才成功,注意的地方可以參考http://www.cnblogs.com/joetao/articles/1934884.html,由於我的WebService就在同一個解決方案里,所以我添加的時候直接在解決方案的服務里找到添加的。這個問題困擾了我一天。
現在總算能順利跑起來了,部署又有問題了。代碼可以跑,部署到IIS里就報錯,從報錯的內容來看應該是WebService的服務沒有找到,這就讓人摸不到頭腦了,網上也搜了各種各樣的帖子,各種方法也試過,WebService也能正常瀏覽,就是調用不起來。QQ里問了兩個人,不鳥,群里也問,直接無視,部門里也沒別人搞着玩意,這可讓人惱火了,真有點窮途末路的感覺。
為什么會調用不起來呢?權限嗎?哥,我已經開放到everyone了,還要我怎么開?網上說看網址里直接輸入地址能不能看到WebService的頁面,能訪問到就說明服務沒有問題,我能正常訪問頁面,方法也一目了然,為什么我的頁面調不起來,不帶這么玩的。
我打算自己弄個小程序調調小的服務,一切從簡,簡單到只有一個HelloWord方法,也一樣,代碼能調,一部署就調不到。一個偶然的、不經意的一瞥,讓我看到了破綻,嘿嘿,這玩意有玄機!玄機在哪,就在於路徑!我注意到,iis部署好后WebService是能正常瀏覽,但路徑並不是代碼里調用的路徑,難怪一直調不到,於是又設置了遍虛擬路徑,指向WebService的物理路徑,轉換成應用程序,再次調用,成功!這個問題又花了我一天時間。
雖然成功了,我還是有兩個疑問,如有高手路過,不妨為我解惑。
疑問一:如果iis部署時新建網站,這就要指定端口,這樣訪問時就要用IP帶端口的形式訪問,這有點怪怪的,我也沒見百度后面還帶個端口訪問啊;如果都部署在默認網站里,那就不需要帶端口,默認是80,直接localhost就能訪問頁面了,符合常理,但是VS里是會自動給你創建端口的,引用好之后就是固定映射,必須帶端口,iis是可以建虛擬路徑,但是不帶端口的,我總不能讓VS指定端口為80吧,不用試我都知道,肯定端口沖突。
疑問二:在新建網站的時候已經指向了物理路徑,這時必須再添加個虛擬路徑指向這個路徑,否則就只能localhost+端口訪問,這不是很二嘛,網站不可以指定虛擬路徑,必須添加,既然這個路徑有可能是沒用的,那新建網站何必指向路徑?既然是雞肋,就做好雞肋的本分,要不然功能就強大點。不知各位是否有這樣的困擾。
大家有什么好的辦法希望能指點指點。前面說的兩個問題花費了我兩天時間,期間也有不少小問題,都一一去嘗試了,收獲頗多,還是那句話,If you never try,you will never know.再接再勵吧!