0

我正在使用本地系统在 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>

但现在我收到以下错误

配置错误描述:处理服务此请求所需的配置文件期间发生错误。请查看下面的具体错误详细信息并适当地修改您的配置文件。

解析器错误消息:调用目标已引发异常。

源错误:

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

源文件:C:\Users\GizaKarthik\Desktop\SessionDemo\SessionDemo\SessionDemo_WebRole\web.config 行:41

程序集加载跟踪:以下信息有助于确定为什么无法加载程序集“Microsoft.WindowsAzure.StorageClient, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。

警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败日志记录相关的一些性能损失。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

4

1 回答 1

0

exeption 的原因是我使用了损坏的 dll。从此处下载其他 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。它应该像冠军一样工作。编码快乐!!

于 2011-02-01T05:57:12.673 回答