我一直在尝试关注this example(从网站上的链接或here下载源代码,但我一直遇到示例中嵌入的错误。
我的程序如下(安装AppFabric SDK和其他依赖项后):
当我运行此测试时,在初始化新的InterRoleCommunicationExtension(要初始化的第一个角色间通信基础架构this.interRoleCommunicator = new InterRoleCommunicationExtension();
)期间,会出现错误:“值不能是null。参数名称:contractType。“
稍微深入研究一下,我在ServiceBusHostFactory.cs(示例中的一个文件)中执行以下方法:
public static Type GetServiceContract(Type serviceType)
{
Guard.ArgumentNotNull(serviceType, "serviceType");
Type[] serviceInterfaces = serviceType.GetInterfaces();
if (serviceInterfaces != null && serviceInterfaces.Length > 0)
{
foreach (Type serviceInterface in serviceInterfaces)
{
ServiceContractAttribute serviceContractAttr = FrameworkUtility.GetDeclarativeAttribute<ServiceContractAttribute>(serviceInterface);
if (serviceContractAttr != null)
{
return serviceInterface;
}
}
}
return null;
}
serviceType参数的Name属性是“IInterRoleCommunicationServiceContract”,它是演示的一个类,它扩展了IObservable。对serviceType.GetInterfaces()的调用返回“System.IObservable`1”接口,然后将其传递到 Type[] serviceInterfaces = serviceType.GetInterfaces();
if (serviceInterfaces != null && serviceInterfaces.Length > 0)
{
foreach (Type serviceInterface in serviceInterfaces)
{
ServiceContractAttribute serviceContractAttr = FrameworkUtility.GetDeclarativeAttribute<ServiceContractAttribute>(serviceInterface);
if (serviceContractAttr != null)
{
return serviceInterface;
}
}
}
return null;
}
,其中包含以下代码:
FrameworkUtility.GetDeclarativeAttribute(serviceInterface);
public static IList GetDeclarativeAttributes(Type type) where T : class
{
Guard.ArgumentNotNull(type, "type");
1,“此方法返回一个空数组,这会导致函数返回null,并将上述消息的异常返回到被提出。
我非常有兴趣让这个场景有效,因为我认为发布/订阅消息传递范例是我的应用程序的完美解决方案。有没有人能够获得这个演示代码(来自AppFabric CAT团队本身!)工作,或者可以发现我的错误?谢谢你的帮助。
答案 0 :(得分:3)
在原始博文中回答(见下面的链接)。如果您仍然遇到问题,请告知。我们致力于尽最大努力支持我们的样品。