2012-11-14 2 views
3

azure에 호스팅 된 과수원 웹 사이트가 azure 데이터베이스에 연결되어 있습니다. 계속 진행 중입니다. 주어진 식별자가없는 행이 없습니다. [Orchard.Roles.Models.PermissionRecord # 33] 여기에 스택 추적이 있습니다.오차드 Azure 웹 사이트 오류

[ObjectNotFoundException: No row with the given identifier exists[Orchard.Roles.Models.PermissionRecord#33]] 
NHibernate.Impl.DefaultEntityNotFoundDelegate.HandleEntityNotFound(String entityName, Object id) +56 
NHibernate.Proxy.AbstractLazyInitializer.CheckTargetState() +48 
NHibernate.Proxy.AbstractLazyInitializer.Initialize() +87 
NHibernate.Proxy.DefaultLazyInitializer.Intercept(InvocationInfo info) +85 
PermissionRecordProxy.get_Name() +192 
Orchard.Roles.Services.RoleService.GetPermissionsForRole(Int32 id) +128 
Orchard.Roles.Services.RoleService.GetPermissionsForRoleByNameInner(String name) +37 
Orchard.Roles.Services.<>c__DisplayClasse.<GetPermissionsForRoleByName>b__d(AcquireContext`1 ctx) +26 
Orchard.Caching.Cache`2.CreateEntry(TKey k, Func`2 acquire) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Caching\Cache.cs:57 
Orchard.Caching.<>c__DisplayClass2.<Get>b__0(TKey k) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Caching\Cache.cs:19 
System.Collections.Concurrent.ConcurrentDictionary`2.AddOrUpdate(TKey key, Func`2 addValueFactory, Func`3 updateValueFactory) +125 
Orchard.Caching.Cache`2.Get(TKey key, Func`2 acquire) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Caching\Cache.cs:17 
Orchard.Caching.DefaultCacheManager.Get(TKey key, Func`2 acquire) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Caching\DefaultCacheManager.cs:33 
Orchard.Roles.Services.RoleService.GetPermissionsForRoleByName(String name) +100 
Orchard.Roles.Services.RolesBasedAuthorizationService.TryCheckAccess(Permission permission, IUser user, IContent content) +595 
Orchard.Security.Authorizer.Authorize(Permission permission, IContent content, LocalizedString message) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Security\Authorizer.cs:72 
Orchard.Security.Authorizer.Authorize(Permission permission) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Security\Authorizer.cs:60 
Orchard.Security.SecurityFilter.OnAuthorization(AuthorizationContext filterContext) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Security\SecurityFilter.cs:24 
System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor) +97 
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +311 
System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__19() +23 
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +19 
System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10 
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55 
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39 
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23 
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55 
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29 
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 
System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25 
System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23 
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +55 
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31 
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
Orchard.Mvc.Routes.HttpAsyncHandler.EndProcessRequest(IAsyncResult result) in c:\Users\sebros\My Projects\Orchard\src\Orchard\Mvc\Routes\ShellRoute.cs:162 
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9629708 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

내가 PermissionRecord 테이블에서 데이터베이스에서 검토 한 모든 데이터베이스에는 ID 번호 (33)이 없습니다. 웹 개발과 관련된 현지 개발을 위해 webmatrix에 과수원 웹 사이트를 다운로드하면 웹 사이트에서 오류가 전혀 발생하지 않으며 SQL Azure 데이터베이스에 올바르게 연결됩니다. 그래서 조금은 웹 사이트에서 파일을 직접 다운로드 한 이후로 로컬에서 작동하고 하늘색 웹 사이트에서와 동일한 파일을 사용해야하므로 왜 이것이 하늘빛에서 작동하지 않는지 혼란 스럽습니다. 누구든지 아이디어가 있습니까?

답변

3

이것은 꽤 연체되었지만, 나는 오늘 아침에 과수원 1.6에서 비슷한 상황에 부딪쳤다. 그것이 어떻게 일어 났는지 확실하지 않다! 이 문제가 다른 사람에게도 도움이되기를 바랍니다.

내가 잘못된 기록을 찾기 위해 SQL의이 비트를 사용

(내가이 나이 전에 활성화 된 후 모듈 권한을 변경했다 및 사용자에게 깨진 역할을 할당 할 때까지 문제를 발견 hadnt하는 가정) :

SELECT  TOP (1000) MyPrefix_Orchard_Roles_RolesPermissionsRecord.Id, MyPrefix_Orchard_Roles_RolesPermissionsRecord.Role_id, 
        MyPrefix_Orchard_Roles_RolesPermissionsRecord.Permission_id, MyPrefix_Orchard_Roles_RolesPermissionsRecord.RoleRecord_Id, 
        MyPrefix_Orchard_Roles_RoleRecord.Name AS RoleName, MyPrefix_Orchard_Roles_PermissionRecord.Name AS PermissionName, 
        MyPrefix_Orchard_Roles_PermissionRecord.FeatureName AS PermissionFeatureName, 
        MyPrefix_Orchard_Roles_PermissionRecord.Description AS PermissionDescription 
FROM   MyPrefix_Orchard_Roles_RolesPermissionsRecord LEFT OUTER JOIN 
         MyPrefix_Orchard_Roles_PermissionRecord ON 
         MyPrefix_Orchard_Roles_RolesPermissionsRecord.Permission_id = MyPrefix_Orchard_Roles_PermissionRecord.Id LEFT OUTER JOIN 
         MyPrefix_Orchard_Roles_RoleRecord ON MyPrefix_Orchard_Roles_RolesPermissionsRecord.Role_id = MyPrefix_Orchard_Roles_RoleRecord.Id 
WHERE  (MyPrefix_Orchard_Roles_RolesPermissionsRecord.Role_id = 1) -- broken administrator role 

사용 권한 레코드가 누락 된 레코드가 두 개있는 것으로 나타났습니다. 하나는 RoleRecord_Id가 NULL로 설정되고 다른 하나는 1로 설정된 관리자입니다. 따라서 권한이 admin으로로드 될 때 권한 레코드를 찾는 데 실패합니다. 이로 인해 로그인이 부분적으로 도움이되었습니다.

관리자의 몇 가지 역할 섹션이 여전히 손상된 것처럼 보였습니다. "Admin/Roles"는 위의 SQL 스크립트를 실행하여 다른 역할에서 문제가되는 행을 더 많이 찾습니다.

나는 임의의 행을 사용하면 문제가 발생하지 않으며 다른 모든 것들은 예상대로 다시 작동한다고 가정합니다.

감사합니다. Matt

관련 문제