c# - 为什么奥尔良筒仓在更改“打招呼”示例以支持主机和 Cereal 后开始失败?

标签 c# orleans

我正在关注orleans example在此示例中,它们不是在同一应用程序域中运行筒仓和客户端,而是进行遍历,以便两者都可以独立启动。我按照建议进行了更改。我修改了 IGrain1.cs 以接受字符串作为参数

Task<string> SayHello(string greetings);

修改grain1.cs实现代码如下

private string text = "Hello World!";
public Task<string> SayHello(string greetings)
{
    var oldText = text;
    text = greetings;
    return Task.FromResult(oldText);
}

当我运行筒仓时,它始终无法启动筒仓并出现此错误

"TypeLoadException: Method 'SayHello' in type 'GrainCollection1.Grain1' from assembly 'GrainCollection1...'

接口(interface)和颗粒定义都匹配。我在这里缺少一些简单的东西?

最佳答案

查看 c:\Microsoft Codename Orleans SDK v0.9\SDK\LocalSilo\Applications。 CodeGen 为每个 Orleans 项目构建一个文件夹。当本地筒仓启动时,初始化程序会扫描此目录中的程序集。

尝试删除 ../Applications 中的文件夹并重建您的解决方案。您应该会看到使用重建的grain 和接口(interface)DLL 重新创建的项目文件夹。

在 DevTestServerConfiguration.xml 中,将 Tracing/DefaultTraceLevel 从“警告”更改为“信息”。当您运行 InitSilo 时,您将看到筒仓正在寻找什么以及它抛出的错误。这将我指向了 SDK silo 文件夹。

编辑:您可能还需要删除 ..\SDK\Binaries 中的文件夹。请务必在删除后立即重建整个项目。

关于c# - 为什么奥尔良筒仓在更改“打招呼”示例以支持主机和 Cereal 后开始失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26825822/

相关文章:

c# - 重新加载后,Jquery 定位器正在查找错误的页面

c# - LINQ 中的左外连接

c# - 只有 1 个主键的 EntityFramework 链接表

c# - 在尝试发布云服务时,我收到 : "Error: A security token validation error occured for the received JWT token..."

c# - 奥尔良工作分配

c# - 普通 C# 和 Orleans 中的方法调用之间的区别

带背板的 SignalR .NET 客户端 : clarification

c# - 如何在 C# (WPF) 中动态链接复选框以启用文本框?

c# - 非静态字段、方法或属性需要对象引用 'System.Web.UI.Page.Request.get'