Asp.Net Azure Service Fabric 中调用 StateLess 服务的核心 StateLess 服务
Asp.Net Core StateLess Serivce Calling StateLess Serice in Azue Service Fabric
我正在尝试从 Asp.Net 核心无状态 API 调用无状态服务。我无法访问无状态服务中的方法。
这是将调用无状态服务方法的控制器操作方法。
// GET api/values
[HttpGet]
public async Task<string> GetAsync()
{
var repository = ServiceProxy.Create<IRepository>(
new Uri("fabric:/Application1/Stateless1"));
return await repository.GetSomething();
//return new string[] { "value1", "value2" };
}
这是无状态服务中的方法。
internal sealed class Stateless1 : StatelessService, IRepository
{
public Stateless1(StatelessServiceContext context)
: base(context)
{ }
public async Task<string> GetSomething()
{
return await Task.FromResult("HELLO FROM SERVICE!");
}
}
监听代码为
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return this.CreateServiceInstanceListeners();
}
我可以访问控制器的 Get 方法,但它访问了 repository.GetSomething() 方法并且无法访问该方法。我不知道我在这里错过了什么。
任何指点都会很有帮助。提前致谢
更新:
清单文件:
您需要更改您的 CreateServiceInstanceListeners...
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return this.CreateServiceRemotingInstanceListeners();
}
它需要远程侦听器,因为使用 ServiceProxy 是一个远程调用。
我正在尝试从 Asp.Net 核心无状态 API 调用无状态服务。我无法访问无状态服务中的方法。
这是将调用无状态服务方法的控制器操作方法。
// GET api/values
[HttpGet]
public async Task<string> GetAsync()
{
var repository = ServiceProxy.Create<IRepository>(
new Uri("fabric:/Application1/Stateless1"));
return await repository.GetSomething();
//return new string[] { "value1", "value2" };
}
这是无状态服务中的方法。
internal sealed class Stateless1 : StatelessService, IRepository
{
public Stateless1(StatelessServiceContext context)
: base(context)
{ }
public async Task<string> GetSomething()
{
return await Task.FromResult("HELLO FROM SERVICE!");
}
}
监听代码为
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return this.CreateServiceInstanceListeners();
}
我可以访问控制器的 Get 方法,但它访问了 repository.GetSomething() 方法并且无法访问该方法。我不知道我在这里错过了什么。
任何指点都会很有帮助。提前致谢
更新:
清单文件:
您需要更改您的 CreateServiceInstanceListeners...
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return this.CreateServiceRemotingInstanceListeners();
}
它需要远程侦听器,因为使用 ServiceProxy 是一个远程调用。