標籤:表單 預設 資料來源 port 繼承 tag 使用者 web blog
真的是太不easy了,曾經的時候在window server 2003上面搭建了一套asp+oracle的介面系統。就費了好大的勁兒,事實上那會迷迷瞪瞪的也不知道怎麼的就弄好了,也懶得管了。OK,從昨天到今天打算把介面從測試環境部署到公網環境上去的時候就出現了各種各樣的問題。這次一定得記錄一下。
先來說一下這套介面系統的總體方案:
之所用選用asp是由於屬於輕量級的介面系統,僅僅須要改動好了以後複製粘貼上去介面就馬上生效。而不須要像java系的介面程式要用tomcat打包、上傳、部署這種。那這個系統就是如今window server上啟用IIS,然後建立web網頁服務。然後通過ODBC串連上資料庫,在web頁面中訪問和串連oracle資料庫。
以下就開始一步一步介紹怎樣實現這個過程。
1. IIS服務的啟動。
參考連結:http://www.ip-tcp.com/?tag=windows-server-2008-iis-%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE
由於我們是部署ASP,所以記得把這兩個相關的勾上。感覺不勾選asp.net也沒啥事,可是保險起見還是都勾上吧,也不多啥的
安裝完畢之後,就能夠在管理工具中找到iis管理器了。
這裡我在實際中由於當時IIS已經被啟動了,可是預計是沒有正確得被啟動,我找了好久都沒有找到IIS管理器,後來一怒之下又一次把IIS服務關掉然後又一次啟動,勾上ASP,就ok了。非常多時候。假設你認為自己的操作有問題。或者別人已經給你弄好了可是不知道為什麼有問題,就刪除了又一次來弄吧。
然後我們在網站上面右鍵。選擇加入網站
彈出來以下的介面:
這裡面網站的名稱隨便寫就好了。實體路徑選擇你自己建立的一個目錄。類型和IP地址都不要變。保持HTTP和所有未分配,port能夠隨便填一個。由於我們這個server上已經有網站用了80port,所以我在實際中用了8080;主機名稱能夠不寫的,然後點擊確定
這裡要注意一下,IIS預設的那個網頁會佔用掉80port,剛同事來找我說他們的網頁開啟成iis7的頁面了。我一看果然是把port給佔用掉了。
這裡我們的網站事實上已經建立好了。能夠在你自己的網站的檔案夾以下寫一個簡單的測試頁面,這是我剛弄好的網站資料夾。一個簡單的index.html頁面
.
在原生瀏覽器裡面輸入 127.0.0.1:8080就能夠看到頁面上顯示了123456。說明我們的頁面已經搭建好了。假設你的server能夠公網訪問。直接輸入你的公網IP地址加上port號,也能夠看到剛建立好的頁面。
到這裡事實上網站已經搭建起來了。可是還有兩步額外的操作在這裡一併做了吧。
首先就是能顯示頁面的錯誤碼。假設不開啟的話,asp出現什麼錯誤提示我們是看不到的
開啟我們上一步建立好的網站
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
雙擊ASP
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
點開調試屬性,然後這裡面 “將錯誤發送到瀏覽器”選項預設的是false。我們將其改成True
接下來的步驟是更改應用程式集區啟用32位應用程式,為什麼要這樣做我們在後面再告訴大家。
還有最後一步是這樣:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
設定成具體資訊以後,在你的client(包含不在server上查看。或者通過手機代碼裡面返回的結果)都能夠正常顯示出來錯誤資訊了,偵錯工具必備!
2. 安裝和設定資料庫
我這裡安裝的是oracle10g的client,基本上都是預設的安裝下來,好像僅僅有
安裝類型,選擇管理員和Oracle Net Configuration Assistant:勾選“運行典型配置”安裝完畢資料庫後
在開始菜單中 選擇開啟 Net Configuration Assistant
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
選擇 本地Net服務名配置
選擇加入
這裡的服務名自己填就好了
選擇預設的TCP就ok
這裡須要注意一點:向你們的資料庫管理員要一下資料庫的內網IP地址以及port號;我不太確定這裡填寫外網地址能否夠,由於我們的系統做了比較複雜的安全認證。我這裡寫外網地址是不ok的;然後port號也要問清楚。
這裡也能夠選擇直接測試,只是應該是會失敗的。由於使用的username和password不正確,
點擊以下的更改登入。換成你的username和password,再又一次測試,應該就能串連成功
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
下一步
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
這裡Net CA就配置好了。
3. 配置ODBC
這裡假設你直接用系統中內建的ODBC。會出現這種情況:
你會發如今系統DSN加入中僅僅有一個SQL Server。這就是我們之前一個地方提到的,32位和64位的原因了。只是網上有解決的方法:
找到C:/Windows/SysWOW64
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
雙擊開啟odbcad32.exe,
在選擇系統DSN。選擇加入,就能夠找到oracle10g這個我們須要用到的驅動了
點擊完畢
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
在彈出的對話方塊中,Data Source Name我們在第2步中建立的名稱,然後TNS service Name從下拉框中選擇上一步建立好的那個,圖中是我建立的名稱。點擊ok,這一步就算完畢了。
4. 調試你的ASP網頁
一個典型的測試你的ASP能不能成功連到資料庫的頁面例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
server填寫成前兩個步驟裡面我們起的那個名字,然後uid是你的oracle的username,pwd是password
還記得我們第1步裡面有改過web的程式池支援32位嗎?假設沒有那個步驟,你的頁面應該會先有1行 1,111111,就是我們輸出的內容,然後會提示一個80004005的錯誤
錯誤的原因是 : 未探索資料源名稱而且未指定預設驅動程式
採用這個網頁中的方法http://blog.snsgou.com/post-619.html。也就是我們在前面處理過的,把程式池改成啟用32位的程式 就ok了。
假設你以為到這裡就ok了,那你就又錯了。改完了之後,你的asp頁面會彈出另外一個錯誤:
依然是80004005錯誤。可是錯誤的原因是SQLAllocHandle on SQL_HANDLE_ENV失敗。繼續google怎樣解決,找到了這個頁面:
http://bbs.bccn.net/thread-192876-1-1.html
我也想起來了之前在windows server 2003上面也出現過相同的問題。當時也是搞了好多然後重新啟動下就ok了,就抱著試一試的方法,相同的步驟操作了一遍。然後重新啟動,一定要重新啟動,就ok了
由於win server 2003和2008在這個步驟上面的設定略微有一些不一樣。這裡我就具體介紹一下2008的步驟吧,03的話就依照上面那個連結裡面的內容來做就好了
首先找到你oracle10g安裝的根資料夾位置,然後右鍵oracle10g這個檔案夾。選擇屬性。然後切換到安全 選項卡
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
點擊編輯
然後在彈出的表單中點擊加入
然後在 選擇使用者或組 這裡我們要加入兩個使用者權限進去,這裡不用我們輸入。直接點擊進階進行尋找
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
彈出這個頁面。然後點擊 馬上尋找
這裡面就列出了當前server上的全部使用者,我們找到兩個使用者,一個是圖中已經高亮選中的IIS_IUSRS。還有一個是圖裡面滑鼠移至上方的地方 IUSR
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >
點擊確定之後。會給選擇的使用者加入對應的許可權,我當時在做的時候,有一些檔案沒有訪問的許可權。就直接忽略了就ok。
整個過程完畢了之後就回到了安全的選項頁面。這個時候 點擊 進階
在彈出的進階安全設定中 許可權的選項卡裡面 點擊 更改許可權
選中剛才我們加入的兩個使用者。IIS_IUSRS 和IUSR,然後把以下的 包含可從該對象的父項繼承的許可權 勾中,然後點擊確定,這個時候又會進行一下相關檔案和目錄的許可權授予的操作,相同還是有幾個目錄沒有訪問許可權,相同的忽略掉就ok了
最後一個關鍵步驟,重現server!
。一定要重新啟動server!!
假設不出什麼問題的話,就ok了。
我是用這個方案搞定的,在網上還搜到了這種解決方案。沒有實踐。不知道可不可行,由於我的程式搞定了,就懶得再折騰了,有興趣的同學們能夠實驗一下:
到這裡,我們的整個ASP頁面連結資料庫所有都成功了!!
Windows server2008 搭建ASP介面訪問串連oracle資料庫全過程記錄