2010年9月17日 星期五

BugNet Devepoler 角色查看Issue

同事使用BugNet的角色將之設定為Developer, 因為望文生義,所以只幫他勾選了這個角色

有天他登入後,查看Issue List, 點選了某一筆的IssueTitle, 接著畫面就呆住不動等啊等的,出現了了這個錯誤.

Object reference not set to an instance of an object.

Stack Trace:

[NullReferenceException: Object reference not set to an instance of an object.]
   BugNET.Issues.IssueDetail.SetFieldSecurity() in C:\BugNet\WebSite\Issues\IssueDetail.aspx.cs:487
   BugNET.Issues.IssueDetail.Page_PreRender(Object sender, EventArgs e) in C:\NET\BugNet\WebSite\Issues\IssueDetail.aspx.cs:139
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +24
   System.EventHandler.Invoke(Object sender, EventArgs e) +0
   System.Web.UI.Control.PreRenderRecursiveInternal() +112
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4184


debug後在 IssueDetail.aspx.cs SetFieldSecurity 方法, 倒數幾行
if (!ITUser.HasPermission(ProjectId, Globals.Permission.CLOSE_ISSUE.ToString()))
 {
     Status s = Status.GetStatusByProjectId(ProjectId).Find(delegate(Status status){return status.IsClosedState == true;});
       if (s !=null)
        {
            DropDownList stat = (DropDownList)DropStatus.FindControl("dropStatus");
            stat.Items.Remove(stat.Items.FindByValue(s.Id.ToString()));
        }
  }

加入紅字判斷物件是否存在即可.


另外原先下載的sourcre中,少了一個 /jHtmlArea/scripts/jHtmlArea-0.7.0.js目錄及檔案,導致查看issue detail時,會有javascript 找不到屬性或方法的錯.

可以到此網站下載, 在專案中將目錄及檔案加入即可,不然開啟查看明細的page時,要等很久.

2010年9月14日 星期二

BugNet 禁止匿名進入

BugNet預設是可以讓使用者一進入網站後就看到所有的public project的訊息,雖然是唯讀,但總覺得應該先登入後再依來查看project會比較好.

原本以為要改寫程式碼,但後來在資料表BugNet_HostSettings中看到,SettingName有一列名為 DisableAnonymousAccess,將其SettingValue設為True即可禁止匿名登入

2010/09/16....原來在 /Administration/Host/Settings.aspx 下,已經有這個選項的設定了...(汗...)

ps2.如果要依使用者權限來顯示project,則在Admin projects下,進入project administration,將其Security 的Access Type設為private,如此,當使用者登入時project就會依權限角色的設定來顯示了.
預設的Access Type是public ,代表只要登入後,所有人都可直接唯讀該project 內容.

另外,如要停用網站register功能,同樣的找到 DisableUserRegistration 將其SettingValue設為True即可

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...