在我的应用程序中,我有自己的API,可以将内容保存在不同的存储库中。其中之一就是Sensenet。
我使用客户端API将内容存储在Sensenet上,但初始化客户端上下文时遇到了问题:
ClientContext.Initialize(new[]
{
new ServerContext
{
Url = siteUrl,
Username = userName,
Password = userPassword
}
});当我启动我的应用程序时,对方法的第一个调用会很好地初始化,但是在第二个调用中,它会启动一个异常.
我相信这个解决方案可以通过使用ClientContext.Current.但我不知道该如何实现它..。
发布于 2017-02-11 14:38:19
客户端上下文的初始化方法应该只在每个应用程序域中调用一次。这就是为什么在第二个电话中出现异常的原因。
在您的情况下(当您从另一个web应用程序调用Sense/Net时),您应该在应用程序启动过程中只调用它一次。另一个例子是:在命令行工具中,应该在主方法的某个地方调用它。
Initialize方法目前做得不多,只存储所提供的服务器信息。例如,如果您想从导入器工具中使用单个管理用户调用Sense/Net,这样就不必在每次调用时提供用户凭据,这是非常有用的。
但是,如果您想使用调用不同的用户凭据(为了使用Sense/Net的权限系统)调用方法,您可以简单地提供每个调用的服务器信息。例如:
var server = new ServerContext
{
Url = "http://example.com",
Username = "johnsmith",
Password = "password"
};
// see the server parameter here!
var content = await Content.LoadAsync(1234, server);
content["MyField"] = "value";
// no server parameter, we already know it
await content.SaveAsync();https://stackoverflow.com/questions/42136391
复制相似问题