【发布时间】:2013-07-19 03:58:55
【问题描述】:
我已经在 IIS 上设置了一个 RavenDB 实例。我可以使用网络服务应用程序很好地连接到它,但是当我尝试连接然后使用在本地管理员下运行的应用程序进行初始化时,我收到错误“无法确定域的身份”。我唯一能想到的就是试图冒充“网络服务”,但我不确定这是否可能。管理员拥有 raven web 文件夹的完全权限。
【问题讨论】:
标签: windows iis-7 ravendb impersonation
我已经在 IIS 上设置了一个 RavenDB 实例。我可以使用网络服务应用程序很好地连接到它,但是当我尝试连接然后使用在本地管理员下运行的应用程序进行初始化时,我收到错误“无法确定域的身份”。我唯一能想到的就是试图冒充“网络服务”,但我不确定这是否可能。管理员拥有 raven web 文件夹的完全权限。
【问题讨论】:
标签: windows iis-7 ravendb impersonation
在本地连接,您使用的是 http://localhost:[port] 吗?我在本地使用域名时遇到问题。
尝试在本地运行您的应用程序并通过本地主机地址连接到 RavenDB。
【讨论】:
解决了这个问题。我必须在不同的应用程序域中运行我的 Raven 文档存储连接和初始化。我最终这样做了。
string pathToDLL = installerFolder + "\\RavenSiteSetup.dll";
AppDomainSetup domainSetup = new AppDomainSetup {
ApplicationBase = installerFolder,
PrivateBinPath = pathToDLL
};
Evidence ev1 = new Evidence();
ev1.AddAssemblyEvidence(new ApplicationDirectory(
typeof(RavenSetup).Assembly.FullName)
);
ev1.AddHostEvidence(new Zone(SecurityZone.Internet));
AppDomain ad = AppDomain.CreateDomain("RavenSetup", ev1, domainSetup,
Assembly.GetExecutingAssembly().PermissionSet,null);
IIdentity identity = new GenericIdentity("RavenSetup");
IPrincipal principal = new GenericPrincipal(identity, null);
ad.SetThreadPrincipal(principal);
RavenSetup remoteWorker = (RavenSetup)ad.CreateInstanceFromAndUnwrap(
pathToDLL,
typeof(RavenSetup).FullName);
remoteWorker.Connect(sitePath);
【讨论】: