2012-08-09 2 views
7

VS2012 사용 WebRole 속성 캐싱 탭에서 캐싱 기능을 추가했습니다. 그 중에서도 web.config에서 다음 XML을 생성했습니다.하늘색 공동 캐싱 구현

<dataCacheClients> 
    <tracing sinkType="DiagnosticSink" traceLevel="Error" /> 
    <dataCacheClient name="default"> 
     <autoDiscover isEnabled="true" identifier="[cluster role name]"/> 
     <!-- <localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" /> --> 
    </dataCacheClient> 
    </dataCacheClients> 

오케이, 훌륭합니다. 나는 [cluster role name]을 webrole의 이름으로 바꿨다. "helloworld.web". 지금, 나는이 DataCacheFactory 또는 DataCache 개체를 만들 때 :

Microsoft.ApplicationServer.Caching.DataCacheException was unhandled 
    HelpLink=http://go.microsoft.com/fwlink/?LinkId=164049 
    HResult=-2146233088 
    Message=ErrorCode<ERRCA0021>:SubStatus<ES0001>:Server collection cannot be empty. 
    Source=Microsoft.ApplicationServer.Caching.Client 
    ErrorCode=21 
    SubStatus=-1 

Some notes: 
IDE: VS2012, 
Framework: 4.0 
AzureSDK: June2012 
Local dev machine 

내가 무엇을 놓치고 : 나는 다음과 같은 오류가 얻을

_dataCacheFactory = new DataCacheFactory(); 
    _defaultCache = _dataCacheFactory.GetDefaultCache(); 

    //Or, just this line 
    _defaultCache = new DataCache(@"default"); 

를?

편집

나는 그것이 작동 할 수있어!

WebRole OnStart 메서드에서 DataCacheFactory를 만들고, 그것을 Global.asax의 Application_Start로 옮겼습니다. 작동하고있는 것 같습니다. 내가이 일을하는 데 https://stackoverflow.com/a/11886136/1374935

답변

6

web.config에 XML을 추가하는 것에 대해 질문하는 경우이 코드는 Application_Start 메서드에서 사용할 때 코드가 작동하는 웹 역할에서 호스팅되는 웹 응용 프로그램에서 작동합니다.

그러나 WebRole.cs의 코드가 다른 프로세스에서 실행된다는 것을 알아야합니다 (웹 응용 프로그램을 시작하기 전에). 그래서 web.config에서 읽을 수 없기 때문에 서버가 구성되어 있지 않은 것으로 보입니다.

WebRole.cs에서 코드를 작동 시키려면 해당 코드를 실행하는 프로세스의 구성 파일에 XML을 추가해야합니다. 코드는 WaIISHost.exe 프로세스에서 실행되므로 새 구성 파일 WaIISHost.exe.config을 만들어이 파일에 XML을 추가하고 해당 파일의 출력 디렉터리로 복사 속성을 " 항상 복사 ".

여기 WaIISHost.exe 과정에 대해 자세히 알아보기 : New Full IIS Capabilities: Differences from Hosted Web Core

1

:이 경우 왜

Sandrino 설명!

WebRole OnStart 메서드에서 DataCacheFactory를 만들고, 그것을 Global.asax의 Application_Start로 옮겼습니다. 작동하고있는 것 같습니다.

+0

이유하지만 알고, 어디 같은 푸른 테이블을 만드는 등의 특정 작업을 초기화하는 코드를 삽입하는 가장 좋은 장소가 될 것입니다 :

DataCache AgencyCache = new DataCache("AgencyDataValidation"); 

수입에 기억 ASP.NET MVC 응용 프로그램 용. – States

+0

참고 : http://stackoverflow.com/a/11886136/1374935 – States

+1

정확히 동일한 문제가 있지만 MVC 컨트롤러에서 캐시를 시작합니다. Appplication_start에서 아무 것도하지 않았습니다. 모든 아이디어, 그것은 비슷한 문제이며 시작시 뭔가를 놓치고 있습니까? –

1

예. 단계별로 다양한 설정을하고 문제 해결 중에 Azure Tools를 다시 설치했습니다.

가 위에서 언급의 Web.config이지만, 서비스 정의, 그것은 선이 확인하십시오려고 한 번 거의 모든 것을 변경 한 다음

<Import moduleName="Caching" /> 

이 내 루트 문제가 있었다, 그러나 그것은 작동합니다. 또한 웹 역할을 살펴보면 Azure 도구를 다시 설치하여 해결 된 캐싱 탭이 누락되었습니다 (이전의 도구를 정리했거나 도움이되지 않았을 수도 있음). 위의 내용보다 Azure 사이트 예제를 통해 시작했습니다.캐시 연결 등을 만들어

using Microsoft.ApplicationServer.Caching; 
싶습니다