在windows azure上配置会话

时间:2011-01-29 15:27:34

标签: session azure-storage

我使用本地系统在windows azure上测试会话。我在web.config中完成了以下配置

<appSettings>
    <!-- account configuration -->
    <add key="TableStorageEndpoint" value="http://127.0.0.1:10002/devstoreaccount1/" />
    <add key="BlobStorageEndpoint" value="http://127.0.0.1:10000/devstoreaccount1/" />
    <add key="AccountName" value="devstoreaccount1" />
    <add key="AccountSharedKey" value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" />
    <add key="DefaultMembershipTableName" value="Membership" />
    <add key="DefaultRoleTableName" value="Roles" />
    <add key="DefaultSessionTableName" value="Sessions" />
    <add key="DefaultProviderApplicationName" value="ProviderTest" />
    <add key="DefaultProfileContainerName" />
    <add key="DefaultSessionContainerName" />
  </appSettings>
  <system.web>

    <sessionState mode="Custom" customProvider="TableStorageSessionStateProvider">
      <providers>
        <clear />
        <add name="TableStorageSessionStateProvider" type="Microsoft.Samples.ServiceHosting.AspProviders.TableStorageSessionStateProvider" />
      </providers>
    </sessionState>
</system.web>

但现在我收到以下错误

  

配置错误说明:An   处理过程中出错   需要的配置文件   服务这个请求。请查阅   下面的具体错误详情和   修改配置文件   适当。

     

分析器错误消息:异常有   被一个人的目标所抛出   调用

     

来源错误:

     第39行:第40行:
   第41行:第42行:行   43:

     

源文件:   C:\ Users \用户GizaKarthik \桌面\ SessionDemo \ SessionDemo \ SessionDemo_WebRole \的web.config   行:41

     

装配加载跟踪:以下内容   信息可能会有所帮助   确定装配的原因   “Microsoft.WindowsAzure.StorageClient,   版本= 1.0.0.0,文化=中立,   PublicKeyToken = 31bf3856ad364e35'可以   不加载。

     

WRN:程序集绑定日志记录是   关掉。要启用程序集绑定   失败日志记录,设置注册表   值   [HKLM \ SOFTWARE \微软\融合!EnableLog]   (DWORD)到1.注意:有一些   与...相关的绩效惩罚   程序集绑定故障记录。转身   关闭此功能,删除注册表   值   [HKLM \ SOFTWARE \微软\融合!EnableLog]。

1 个答案:

答案 0 :(得分:0)

该例外的原因是我使用了损坏的dll。从here下载其他c#示例。查找asp提供项目编辑TableStorageSessionstateProvider中的代码

找到这段代码

            else            
            {     
                    byte[] items = Convert.FromBase64String(reader.ReadLine());
                    byte[] statics = Convert.FromBase64String(reader.ReadLine());
                    int timeout = session.Timeout;
                    // Deserialize the session
                    result = DeserializeSession(items, statics, timeout);

            }

用这个

替换上面的代码
            else
            {
                try // Added try statement   
                {
                    // Read Items, StaticObjects, and Timeout from the file
                    byte[] items = Convert.FromBase64String(reader.ReadLine());
                    byte[] statics = Convert.FromBase64String(reader.ReadLine());
                    int timeout = session.Timeout;
                    // Deserialize the session
                    result = DeserializeSession(items, statics, timeout);
                }
                catch (Exception e) // Added catch statement
                {
                    // Return an empty SessionStateStoreData   
                    result = new SessionStateStoreData(new SessionStateItemCollection(),
                                                       SessionStateUtility.GetSessionStaticObjects(context),
                                                       session.Timeout);
                }

            }

然后编译并使用dll。它应该像冠军一样工作。快乐的编码!!