我使用本地系统在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]。
答案 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。它应该像冠军一样工作。快乐的编码!!