天天看點

AspNetForums1.0安裝手記

系統環境:

Window2000、IIS5.0、DotNet Framework1.1、SqlServer2000

一、初始設定

将AspNetForums解壓到一個目錄DotNetForum當中,有如下目錄:

--AspNetForums

--Engine

--Install_Images

--SQLScripts

--SqlUpgradeScripts

在IIS當中将AspNetForums設為一個虛拟目錄AspNetForums(其他名字也無所謂),NT ACL權限允許Everyone通路。

在SqlServer2000中建立一個資料庫AspNetForums,使用其他名字也沒有關系,在AspNetForums目錄中Web.Config檔案裡<add key="connectionString" value="server=localhost;Trusted_Connection=true;database=AspNetForums;" />節點,這個節點設定連接配接字元串的屬性,預設就是AspNetForums。

在AspNetForums資料庫中運作SQLScripts中的四個SQL腳本,按照1、2、3、4的順序執行。

由于我是通過自己手動建立了資料庫,是以運作第一個腳本提示有些錯誤,不過也沒有關系,順利執行。

初始設定完畢!

二、調試運作

将Web.Config的<compilation debug="false" />節點改為<compilation debug="true" />,以使它能在編譯情況下調試。

然後通路http://localhost/AspNetForums/

1、運作錯誤一

出現錯誤提示:

無法打開登入 'AspNetForums' 中請求的資料庫。登入失敗。使用者 'HOB/ASPNET' 登入失敗(HOB/ASPNET是我的機器上的ASPNET配置帳戶)。

根據堆棧跟蹤,發現是System.Data.SqlClient.SqlConnection連接配接失敗,我以為是連接配接字元串沒有設定使用者帳号、密碼的緣故,于是修改<add key="connectionString" value="server=localhost;Trusted_Connection=true;database=AspNetForums;uid=sa;pwd=sa" />,但是仍然出錯,仔細一看這個連接配接字元串還有一個Trusted_Connection屬性。原來他使用Windows 帳戶憑據進行資料庫通路的身份驗證,加了uid也沒有用。

是以可以有兩種選擇,去掉Trusted_Connection=true,或者在資料庫中增加HOB/ASPNET這個使用者,并讓他屬于AspNetForums的db_owner的角色。

我選擇在資料庫增加HOB/ASPNET這個帳戶。

通過!!

2、運作錯誤二

運作下來,出現錯誤提示:

無法解決 equal to 操作的排序規則沖突。

根據堆棧跟蹤,檢查了AspNetForums.Data.SqlDataProvider.GetSiteStatistics這個方法(源代碼可以從Engine的工程中找到),發現他通路了forums_GetStatistics這個存儲過程。

檢查資料庫存儲過程發現錯誤出在他調用的另一個存儲過程上Statistics_ResetTopPosters,有幾條類似于:

UPDATE Users SET Attributes = (convert(int, Attributes) & 0xFFFFFFF3)

WHERE Username = (SELECT Username FROM #Top500Users WHERE Rank = @LoopCounter)

這樣的語句。

由于子查詢的結果集排序規則為資料庫預設(我的資料庫為China_PRC排序),而User這張表的UserName字段采用SQL_Latin1_General_CP1_CI_AS排序規則,是以發生equal to的排序規則沖突。

可以給臨時表#Top500Users的UserName字段增加一個SQL_Latin1_General_CP1_CI_AS排序規則,或者用一個變量來存放查詢結果(也就一條結果)。

最後運作成功!!

最近想找一個結構良好的開源論壇,希望是C#編寫的,于是就想到了AspNetForums,我下載下傳的是一個1.0版本,運作了一下發現還有些問題,就記錄下來了。AspNetForums如今他已經發展為了CommunityServer,是一個比較成熟知識管理、協作平台了。