我有一個Asp.net核心2.0無狀態服務和服務結構6上的Asp.net Core 2.0有狀態服務,有10個分區計數。客戶端試圖連接到服務結構ServiceProxy上的無效地址
我跟着這個教程
https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-add-a-web-frontend
我,不同的是我用Visual Studio中的模板的所有步驟,其中當我打電話給我的服務在 CreateServiceReplicaListeners使用KestrelCommunicationListener
protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
{
return new ServiceReplicaListener[]
{
new ServiceReplicaListener(serviceContext =>
new KestrelCommunicationListener(serviceContext, (url, listener) =>
{
return new WebHostBuilder()
.UseKestrel()
.ConfigureServices(
services => services
.AddSingleton<StatefulServiceContext>(serviceContext)
.AddSingleton<IReliableStateManager>(this.StateManager))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.UseUniqueServiceUrl)
.UseUrls(url)
.Build();
}))
};
}
使用此代碼的Asp.net Core 2.0無狀態服務:
var service = ServiceProxy.Create<IStorageService>(new Uri("fabric:/MyCluster/Storage"), new ServicePartitionKey(Fnv1aHashCode.Get64bitHashCode(User.Id)));
await service.MyMethod();
調用「的MyMethod」
客戶端試圖連接到無效的地址http://localhost:58352/etc時將引發異常..
存在異常的URL存在於服務織物Explorer和Port和PartitionKey是正確的。 在ServiceManifest中沒有設置終端節點,因爲有狀態服務基本上只是模板,並且根據上面的教程添加了IService接口和MyMethod方法。
我在這裏錯過了什麼? Asp.net Core 2.0的文檔不是最新的。
我試圖不使用分區,設置ServicePartitionKey(0)
但結果相同。
我不知道該怎麼做。
謝謝,我混淆了兩個棧。 您可以共享代碼或文檔,瞭解如何使用KestrelCommunicationListener公開的HTTP端點調用暴露的端點? –