C# grpc服务器显示;“未实现的服务错误”;

C# grpc服务器显示;“未实现的服务错误”;,c#,asp.net-core,grpc,C#,Asp.net Core,Grpc,我已根据以下说明创建了grpc服务器和客户端: 当我尝试从客户端调用服务时,客户端显示以下错误消息:“发生了一个或多个错误。(状态(StatusCode=Unknown,Detail=“No Status received”)) 这台服务器: info: Microsoft.AspNetCore.Hosting.Diagnostics[1] Request starting HTTP/2 POST http://STEINI-PC/LocationService/GetLocatio

我已根据以下说明创建了grpc服务器和客户端:

当我尝试从客户端调用服务时,客户端显示以下错误消息:“发生了一个或多个错误。(状态(StatusCode=Unknown,Detail=“No Status received”))

这台服务器:

info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2 POST http://STEINI-PC/LocationService/GetLocations application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'gRPC - gRPC - Unimplemented service'
info: Grpc.AspNetCore.Server.Internal.ServerCallHandlerFactory[1]
      Service 'LocationService' is unimplemented.
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'gRPC - gRPC - Unimplemented service'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 51.812000000000005ms 200 application/grpc
原始文件:

syntax=“proto3”;
服务事件服务{
rpc GetEvents(空)返回(事件){}
rpc GetEvent(Id)返回(事件){}
rpc GetEventsByLocation(Id)返回(事件){}
rpc AddEvent(事件)返回(空){}
rpc UpdateEvent(事件)返回(空){}
rpc DeleteEvent(Id)返回(事件){}
}
服务地点服务{
rpc GetLocations(空)返回(位置){}
rpc GetLocation(Id)返回(位置){}
rpc AddLocation(Location)返回(空){}
rpc UpdateLocation(位置)返回(空){}
rpc DeleteLocation(Id)返回(位置){}
}
服务参与者服务{
rpc GetParticipants(空)返回(参与者){}
rpc GetParticipant(Id)返回(参与者){}
rpc GetParticipantsFromEvent(Id)返回(参与者){}
rpc AddParticipant(Participant)返回(空){}
rpc UpdateParticipant(参与者)返回(空){}
rpc DeleteParticipant(Id)返回(参与者){}
}
消息为空{
}
消息Id{
字符串id=1;
}
消息事件{
重复事件=1;
}
消息位置{
重复位置=1;
}
信息参与者{
重复参与者=1;
}
消息事件{
Id-eventid=1;
字符串名称=2;
字符串描述=3;
Id位置Id=4;
字符串日期=5;
}
消息位置{
Id locationID=1;
字符串名称=2;
字符串地址=3;
}
消息参与者{
Id participantId=1;
字符串名称=2;
Id-eventId=3;
}
服务器启动:

公共类启动
{
//此方法由运行时调用。请使用此方法将服务添加到容器中。
//有关如何配置应用程序的更多信息,请访问https://go.microsoft.com/fwlink/?LinkID=398940
public void配置服务(IServiceCollection服务)
{
var connectionString=@“数据源=STEINI-PC;初始目录=thesisSteinmetz;持久安全信息=True;用户ID=SA;密码=SA123”;
services.AddGrpc(选项=>
{
options.EnableDetailedErrors=true;
});
services.AddDbContext(options=>options.UseSqlServer(connectionString));
}
//此方法由运行时调用。请使用此方法配置HTTP请求管道。
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(端点=>
{
//必须通过gRPC客户端与gRPC端点进行通信。
//要了解如何创建客户端,请访问:https://go.microsoft.com/fwlink/?linkid=2086909
endpoints.MapGrpcService();
endpoints.MapGrpcService();
endpoints.MapGrpcService();
});
}
}
定位服务:

公共类LocationService:LocationServiceBase
{
私有只读数据上下文_上下文;
私有只读ILocationDataHandler\u locationDataHandler;
//公共场所服务
//{
//var connectionString=@“数据源=STEINI-PC;初始目录=thesisSteinmetz;持久安全信息=True;用户ID=SA;密码=SA123”;
//var contextOptions=new DbContextOptionsBuilder();
//使用SQLServer(connectionString);
//_context=新数据上下文(contextOptions.Options);
//\u locationDataHandler=新的EFCoreLocationDataHandler(\u上下文);
//}
公共位置服务(DataContext上下文)
{
_上下文=上下文;
_locationDataHandler=新的EFCoreLocationDataHandler(_上下文);
}
公共重写异步任务AddLocation(位置请求,ServerCallContext上下文)
{
wait_locationDataHandler.AddAsync(LocationConverter.LocationFromGRPC(request));
返回新的空();
}
公共重写异步任务DeleteLocation(Id请求、ServerCallContext上下文)
{
尝试
{
CommonLibrary.Models.Location=等待GetLocation(请求);
wait_locationDataHandler.deleteAncy(location.LocationId);
返回LocationConverter.LocationToGRPC(位置);
}
捕获(例外情况除外)
{
抛出新的RpcException(新状态(StatusCode.NotFound,ex.Message));
}
}
公共重写异步任务GetLocation(Id请求、ServerCallContext上下文)
{
尝试
{
返回LocationConverter.locationtogrp(等待GetLocation(请求));
}
捕获(例外情况除外)
{
抛出新的RpcException(新状态(StatusCode.NotFound,ex.Message));
}
}
公共重写异步任务GetLocations(空请求、ServerCallContext上下文)
{
返回LocationConverter.LocationsToGrpc(wait_locationDataHandler.GetAsync());
}
公共覆盖异步任务更新位置(位置请求、ServerCallContext上下文)
{
尝试
{
wait_locationDataHandler.UpdateAsync(LocationConverter.LocationFromGRPC(请求));
}
捕获(例外情况除外)
{
抛出新的RpcException(新状态(StatusCode.NotFound,ex.Message));
}
复述