首先,让我说明我的真正的问题:我有代码调用ACS管理服务,我希望我的集成测试可以同时运行而不需要每个测试运行破坏其他人。也就是说,由于多个人/构建服务器可能最终同时运行这些测试,如果它们都使用相同的ACS服务命名空间,则会出现并发问题。
我的想法是实现这一目标的最简单方法是为每个测试运行器生成新的,唯一的ACS服务命名空间 - 但据我所知,没有自动创建新服务命名空间(或管理客户端密钥)的方法)。我错了吗?还有另一种方法可以解决这个问题吗?
创建新服务命名空间的自动方法非常有用。
答案 0 :(得分:1)
你是对的。那今天不可能。也许您可以更详细地描述您的场景,并且可能有一些替代解决方案可以避免重新创建命名空间?
答案 1 :(得分:1)
从技术上讲,它应该是可能的,因为管理门户是访问WCF RIA服务的Silverlight应用程序。
如果你挖得足够深,你会发现一些有用的信息:
这是DomainContext的一部分:
public sealed class AppFabricDomainContext : DomainContext
{
public AppFabricDomainContext(Uri serviceUri)
: this((DomainClient) new WebDomainClient<AppFabricDomainContext.IAppFabricDomainServiceContract>(serviceUri, true))
{
}
...
public InvokeOperation CreateServiceNamespace(IEnumerable<string> serviceNames, string parentProjectKey, string serviceNamespace, IEnumerable<string> packageKeys, string regionKey, Action<InvokeOperation> callback, object userState)
{
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("serviceNames", (object) serviceNames);
dictionary.Add("parentProjectKey", (object) parentProjectKey);
dictionary.Add("serviceNamespace", (object) serviceNamespace);
dictionary.Add("packageKeys", (object) packageKeys);
dictionary.Add("regionKey", (object) regionKey);
this.ValidateMethod("CreateServiceNamespace", (IDictionary<string, object>) dictionary);
return this.InvokeOperation("CreateServiceNamespace", typeof (void), (IDictionary<string, object>) dictionary, true, callback, userState);
}
}
找到这些信息是很容易的部分,让它发挥作用...这是另一回事。以身份验证部分为例,您需要使用Windows Live进行身份验证,并在调用WCF RIA服务时使用这些凭据。
祝你好运!