2014-10-17 1 views
1

현재 nopCommerce를 기반으로 웹샵을 만들고 있지만 고객마다 고유 한 제품이 필요합니다. 이를 달성하기 위해 catalogController를 편집하여 내 데이터베이스 테이블에 따라 제품을 필터링했습니다. 비주얼 스튜디오 2013 nopCommerce을 실행할 때nopCommerce가 수정 된 컨트롤러 메소드를 실행하지 않음

I이 사용 된 코드는 완벽하게 작동 : 올바른 제품을 각 고객에 대한 표시되며 아무도 로그인하지 않은 경우 제품이 표시되지 않습니다

내 로컬 컴퓨터에 nopCommerce를 배포합니다. 파일을 우리 (IIS7) 웹 서버로 복사 한 다음 서버를 다시 시작하지 않고 예상대로 작동합니다.

웹 서버를 다시 시작하면 문제가 시작됩니다. 웹 서버가 다시 시작되면 모든 고객은 항상 모든 제품을 볼 수 있습니다.

디버깅을 위해 ActionFilterAttribute를 사용하여 함수가 여전히 호출되는지 (호출되는지) 확인하고 편집 된 함수의 첫 번째 행에 로그 메시지를 추가하여 함수가 실행되는지 확인합니다. 함수가 실행되지 않습니다.

nopCommerce가 응용 프로그램 시작시 범주 페이지를 캐시하는 것으로 의심됩니다. 나는 nopCommerce가 캐싱을 사용한다는 것을 알고 있지만 캐쉬 된 정보 또는 캐싱을 비활성화하는 방법에 대한 정보를 찾을 수 없습니다.

+0

캐시에서 카테고리 및 제품을로드하지 않으려면 카탈로그 및 제품 컨트롤러의 카테고리 메소드 및 제품 메소드에서 캐시를 찾아 캐싱을 제거한 다음 모든 요청에서 항상 신선한 필터 컨텐츠를 가져옵니다. –

+0

@Vap 내가 게시물에서 설명했듯이 :이 방법은 절대 실행되지 않습니다. 메서드의 맨 위에있는 로그 파일에 기록하는 줄이 있는데 로그 파일에 기록되지 않습니다. 메소드에 대한 편집은 아무런 영향을주지 않습니다. – Chirimorin

+0

코드를 보지 않고도 많은 의견을 말하기는 어렵습니다. :) – wooncherk

답변

0

IIS가 실행되지 않는 상태에서 문제가 발생했습니다. 업데이트 된 코드 적절한 DLL (업데이트 된 DLL)이 언제든지로드되어 있는지 확인해야합니다. 당신은 업데이트 된 코드를 무시로드 및 참조 된 경로에 DLL이있을 수 있습니다

  1. : 귀하의 경우, 파일은 아마 대부분의 경우 Nop.Web.dll

    확인합니다. 플러그인의 DLL이 어떻게 든 서버의 "bin"폴더에 있고 Plugins 폴더의 실제 플러그인 DLL을 덮어 버릴 때까지 업데이트되지 않는 문제가있었습니다.

  2. IIS가 업데이트 된 DLL을 올바르게로드하고 캐시하지 못할 수 있습니다. dev 컴퓨터에서 나는 한 번 Temporary ASP.NET files 안에있는 DLL이 최신 버전이 아니라는 것을 발견했습니다. IIS를 종료하고 폴더를 비우는 것은 도움이되지만 안타깝게도 전체 Windows를 재설치 할 때까지 항상 문제가 반복됩니다. .NET 4+에 대한

    폴더 경로는 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

3

내가 테스트 목적에 대한 모든 캐싱을 사용하지 않도록하고 싶었다이다. 난 그냥 DependencyRegistrar.cs (Nop.Web.Framework)에 다음 두 행을 변경 :

builder.RegisterType<MemoryCacheManager>().As<ICacheManager>().Named<ICacheManager>("nop_cache_static").SingleInstance(); 
builder.RegisterType<PerRequestCacheManager>().As<ICacheManager>().Named<ICacheManager>("nop_cache_per_request").InstancePerLifetimeScope(); 

builder.RegisterType<NopNullCache>().As<ICacheManager>().Named<ICacheManager>("nop_cache_static").SingleInstance(); 
builder.RegisterType<NopNullCache>().As<ICacheManager>().Named<ICacheManager>("nop_cache_per_request").InstancePerLifetimeScope(); 

에 이것은 "비 캐싱"매니저에 캐시 매니저를 변경합니다.

(전 NopCommerce에서 완전히 새로 생겼으므로 내가 놓친 뭔가가있을 수 있지만 이는 저에게 효과적입니다.)

관련 문제