Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 找不到grain接口的实现类的类型代码_C#_.net_Orleans - Fatal编程技术网

C# 找不到grain接口的实现类的类型代码

C# 找不到grain接口的实现类的类型代码,c#,.net,orleans,C#,.net,Orleans,在microsoft orleans(2014年4月的v0.9预览版)中,您在创建引用orleans grains的azure web api时可能会遇到以下错误: 找不到grain接口的实现类的类型代码:729000394。 确保谷物组件正确部署并装载到筒仓中 以下是一些可能产生此错误的示例api代码: public class GrainController: ApiController { public GrainControllerController() { }

在microsoft orleans(2014年4月的v0.9预览版)中,您在创建引用orleans grains的azure web api时可能会遇到以下错误:

找不到grain接口的实现类的类型代码:729000394。
确保谷物组件正确部署并装载到筒仓中

以下是一些可能产生此错误的示例api代码:

public class GrainController: ApiController
{

    public GrainControllerController() { 

    }


    public async Task<List<Model>> Get() {
        var grain = MyGrainFactory.GetGrain(0);
        return await grain.GetModels();
    }
}
public类GrainController:ApiController
{
公共GrainControllerController(){
}
公共异步任务Get(){
var grain=MyGrainFactory.GetGrain(0);
return wait grain.GetModels();
}
}
以下是一些颗粒代码:

public class MyGrain: Orleans.GrainBase, IMyGrain
{
    public Task<List<Model>> GetModels()
    {
        return Task.FromResult(new List<Model>() { 

            new Model(){
                 name="my model name"
            }
        });
    }
}

public interface IMyGrain : Orleans.IGrain
{
    Task<List<Model>> GetModel();
}
公共类MyGrain:Orleans.GrainBase,IMyGrain { 公共任务GetModels() { 返回Task.FromResult(新列表(){ 新型号(){ name=“我的型号名称” } }); } } 公共界面IMyGrain:Orleans.IGrain { 任务GetModel(); } 要解决此问题:

您必须引用您的粒度实现,以及web api中的接口。在Visual Studio 2013中,您可以通过以下方式执行此操作:

解决方案资源管理器>右键单击api项目>引用>添加引用>解决方案>选择接口和实现

该解决方案适用于代号为Orleans v0.9的2014年4月预览版

编辑:

您可能会因为其他原因遇到此错误。我们不小心从grains项目的.csproj文件中删除了这个

<Import Project="$(OrleansSDK)\Binaries\OrleansClient\Orleans.SDK.targets" />

这会导致多个不同的错误,例如,您的codegen.cs文件可能无法在新版本上重新编译

此外,您可能已将其从.csproj文件中删除:

<PropertyGroup>
    <PostBuildEvent>
      if exist "$(OrleansSDK)\LocalSilo" (
      if not exist "$(OrleansSDK)\LocalSilo\Applications" (md "$(OrleansSDK)\LocalSilo\Applications")
      if not exist  "$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)" (md "$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)")
      copy /y *.dll  "$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)\"
      copy /y *.pdb  "$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)\"
      )
      if exist "$(OrleansSDK)\Binaries" (
      if not exist "$(OrleansSDK)\Binaries\Applications" (md "$(OrleansSDK)\Binaries\Applications")
      if not exist  "$(OrleansSDK)\Binaries\Applications\$(RootNamespace)" (md "$(OrleansSDK)\Binaries\Applications\$(RootNamespace)")
      copy /y *.dll "$(OrleansSDK)\Binaries\Applications\$(RootNamespace)\"
      copy /y *.pdb "$(OrleansSDK)\Binaries\Applications\$(RootNamespace)\"
      )
    </PostBuildEvent>
  </PropertyGroup>

如果存在“$(OrleansSDK)\LocalSilo”(
如果不存在“$(OrleansSDK)\LocalSilo\Applications”(md“$(OrleansSDK)\LocalSilo\Applications”)
如果不存在“$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)”(md“$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)”)
复制/y*.dll“$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)\”
复制/y*.pdb“$(OrleansSDK)\LocalSilo\Applications\$(RootNamespace)\”
)
如果存在“$(OrleansSDK)\Binaries”(
如果不存在“$(OrleansSDK)\Binaries\Applications”(md“$(OrleansSDK)\Binaries\Applications”)
如果不存在“$(OrleansSDK)\Binaries\Applications\$(RootNamespace)”(md“$(OrleansSDK)\Binaries\Applications\$(RootNamespace)”)
复制/y*.dll“$(OrleansSDK)\Binaries\Applications\$(RootNamespace)\”
复制/y*.pdb“$(OrleansSDK)\Binaries\Applications\$(RootNamespace)\”
)
这就是让你在当地的筒仓中运行谷物的原因。希望这有帮助