基本上我一直從我的asp.net MVC應用越來越被拋出,因爲該User.Identity.IsAuthenticated是假的,這只是發生的,因爲下面相關任務註釋代碼(標記爲**) - 我無法弄清楚它爲什麼會發生,任何幫助表示讚賞。下面我基地控制器上的自定義屬性裏面User.Identity.Name成爲空,但我不明白爲什麼
代碼,對用戶進行認證,如果沒有通過認證我拋出一個異常,像這樣:導致該User.Identity.IsAuthenticated + User.Identity
if (!httpContext.User.Identity.IsAuthenticated)
throw new NoAccessException("unauthorized user"); // invalid users are thrown out...
代碼。名稱成爲空是:
[HttpGet]
public ActionResult TaskDetail(int houseid, int taskid)
{
//NOTE: _repo is a simple ISession over Linq to Sql
//GetCurrentUser() is a extention method which gets the current logged on user
//i.e. User.Identity.Name so I can get the users credentials
var loggedonuser = _repo.GetCurrentUser();
var _house= _repo.Single<House>(x => x.HouseID== houseid&& x.ClientID== loggedonuser.CompanyID);
if (_house== null)
throw new NoAccessException();
var summary = _instruction.ToSummaryDTO();
var companies = _repo.All<Company>();
//var users = _repo.All<User>();
var task = _repo.Single<Task>
(x => x.HouseID== _house.HouseID && x.CompanyID == loggedonuser.CompanyID);
var dto = new TaskDTO
{
TaskID = task.TaskID,
Title = task.Title,
Description = task.Description,
DateCreated = task.DateCreated,
IsClosed = task.IsClosed,
CompanyID = companies.Where(y => task.CompanyID == y.CompanyID).SingleOrDefault().Identifier
};
**dto.AllComments** = _repo.All<TaskComment>()
.Where(x => x.TaskID == task.TaskID)
.OrderByDescending(x => x.Timestamp)
.Select(x => new TaskCommentDTO
{
Comment = x.Comment,
Timestamp = x.Timestamp,
CompanyID = companies.Where(y => x.CompanyID == y.CompanyID).SingleOrDefault().Identifier
});
return View(new TaskViewModel
{
Summary = summary,
TaskDetail = dto,
});
}
注:如果我省略了dto.AllComments(IQueryable的),那麼一切工作正常,我永遠不會拋棄我的系統或者更重要的是User.Identitiy仍然correc牛逼....我試圖轉換成列表 - 這是我理想但這並不正常工作或想,也許有什麼毛病我的LINQ方法...
我的DTO:
public class TaskDTO
{
public int TaskID { get; set; }
public bool IsClosed { get; set; }
public string CompanyID { get; set; }
public string AssignedTo { get; set; }
public DateTime DateCreated { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public IQueryable<TaskCommentDTO> AllComments { get; set; }
}
public class TaskCommentDTO
{
public string CompanyID { get; set; }
public string UserID { get; set; }
public DateTime Timestamp { get; set; }
public string Comment { get; set; }
}
編輯:
protected override void Execute(System.Web.Routing.RequestContext requestContext)
{
base.Execute(requestContext);
}
:其中被拋出的異常
我現在已經追查例外,我在基地控制器,它幫助我發現的bug overrided下面的代碼頁面加載完成0
後,該代碼又跑了一次,當我檢查了請求上下文中的值的RouteData我發現「錯誤」和「FileNotFound」,在這一點上,用戶被歸零了太多,現在我需要找出哪些文件沒有找到...... :(
您是否嘗試調試以查看究竟哪一行引發異常?嘗試逐步瀏覽並觀察變量,看看會發生什麼。 –
是 - 只要我的過濾器運行時,NoAccessException拋出如上圖所示,在此之前,我找不到,因爲我不知道,如果什麼代碼是任何過濾我前運行......除了我說過,如果我刪除相關的代碼評論一切正常...... – Haroon
linq查詢看起來對你好嗎? – Haroon