{
  "id": "dotnet/grpc-unimplemented-method",
  "signature": "Grpc.Core.RpcException: Status(StatusCode=\"Unimplemented\", Detail=\"Method 'ServiceName/MethodName' is unimplemented. If the server is not configured to serve this method, the call will fail.\")",
  "signature_zh": "Grpc.Core.RpcException: Status(StatusCode=\"Unimplemented\", Detail=\"方法 'ServiceName/MethodName' 未实现。如果服务器未配置为提供此方法，调用将失败。\")",
  "regex": "Grpc\\.Core\\.RpcException.*StatusCode=\"Unimplemented\".*Method '.*' is unimplemented",
  "domain": "dotnet",
  "category": "protocol_error",
  "subcategory": null,
  "root_cause": "The gRPC client calls a method that the server does not have a handler registered for, often due to missing service registration, incorrect proto file compilation, or version mismatch between client and server.",
  "root_cause_type": "generic",
  "root_cause_zh": "gRPC 客户端调用了服务器未注册处理程序的方法，通常是由于缺少服务注册、proto 文件编译错误或客户端与服务器版本不匹配。",
  "versions": [
    {
      "version": "2.45.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "2.46.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "2.47.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "2.48.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "",
      "why_fails": "Restarting the server without updating the code does not add the missing method handler; the service must be properly registered in Startup.cs or Program.cs.",
      "fail_rate": 0.9,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "Adding a new proto file without regenerating the server stubs leaves the server unaware of the method; the build step must compile the proto to C#.",
      "fail_rate": 0.7,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Ensure the service is registered in the DI container and endpoint mapping: in Program.cs, add 'app.MapGrpcService<MyServiceImpl>();' and in the service class, inherit from 'MyService.MyServiceBase' and override the method.",
      "success_rate": 0.9,
      "how": "Ensure the service is registered in the DI container and endpoint mapping: in Program.cs, add 'app.MapGrpcService<MyServiceImpl>();' and in the service class, inherit from 'MyService.MyServiceBase' and override the method.",
      "condition": "",
      "sources": []
    },
    {
      "action": "Regenerate gRPC stubs by running 'dotnet build' after updating the .proto file, or use 'dotnet grpc-aspnetcore-codegen' to ensure both client and server use the same proto definition.",
      "success_rate": 0.85,
      "how": "Regenerate gRPC stubs by running 'dotnet build' after updating the .proto file, or use 'dotnet grpc-aspnetcore-codegen' to ensure both client and server use the same proto definition.",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "Ensure the service is registered in the DI container and endpoint mapping: in Program.cs, add 'app.MapGrpcService<MyServiceImpl>();' and in the service class, inherit from 'MyService.MyServiceBase' and override the method.",
    "Regenerate gRPC stubs by running 'dotnet build' after updating the .proto file, or use 'dotnet grpc-aspnetcore-codegen' to ensure both client and server use the same proto definition."
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://grpc.io/docs/guides/error/",
  "official_doc_section": null,
  "error_code": "12",
  "verification_tier": "ai_generated",
  "confidence": 0.88,
  "fix_success_rate": 0.9,
  "resolvable": "true",
  "first_seen": "2023-08-20",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}