C# 托管在Azure上的服务结构WebAPI服务无法通过公共IP和本地主机访问
我正在尝试创建一个ASP.NET核心WebAPI有状态服务,该服务将托管在Azure上,并可从应用程序服务应用程序访问。我已通过Visual Studio成功创建了Service Fabric群集,并指定了默认端口80和83,并在其上发布了我的应用程序。是可访问的,并显示处于正常状态的节点和应用程序C# 托管在Azure上的服务结构WebAPI服务无法通过公共IP和本地主机访问,c#,azure,azure-service-fabric,asp.net-core-webapi,C#,Azure,Azure Service Fabric,Asp.net Core Webapi,我正在尝试创建一个ASP.NET核心WebAPI有状态服务,该服务将托管在Azure上,并可从应用程序服务应用程序访问。我已通过Visual Studio成功创建了Service Fabric群集,并指定了默认端口80和83,并在其上发布了我的应用程序。是可访问的,并显示处于正常状态的节点和应用程序 <Endpoint Name="ServiceEndpoint" Protocol="http" Type="Input" Port="8210" /> 我使用Kestrel作
<Endpoint Name="ServiceEndpoint" Protocol="http" Type="Input" Port="8210" />
我使用Kestrel作为web主机使用的服务器。除了无法访问的公共IP之外,我主要关心的是,如果没有Service Explorer提供的长数据,localhost端点将无法工作。也许问题不在Azure服务结构配置中,而是服务本身
原因可能是什么?我是否使用了错误的URL
更新:我应该澄清,只有在使用ASP.NET核心状态ful服务模板时才会出现问题。我将ASP.NET核心状态less服务上载到localhost和Azure并访问所有api端点都没有问题。我建议使用内置的 确保传递分区键&kind,以指示要访问的有状态服务副本
http://:Port//?PartitionKey=&PartitionKind=&ListenerName=
您的服务很可能可以通过以下方式访问:
http://appname.region.cloudapp.azure.com/myservice/api/values?PartitionKey=0&PartitionKind=Int64Range
分区键注意:
对于分区服务,这是
要访问的分区。注意,这不是分区
ID GUID。对于使用
单件分割方案
为了排除端口问题,请向映射8210到8210的负载平衡器添加一个规则。我无法添加映射到8210的其他规则,因为它已经映射,并且映射必须是唯一的。以下是我当前的LB规则和运行状况探测:使用routeprefix和route重定向到特定api,并将路由连接到service fabric节点公开的端点。假设api/values/get是您的路由,然后转到部署在服务结构上的有状态服务,检查其端点。它可能看起来像localhost:8030。然后向localhost:8030/api/Values/getJust查询信息,我们使用无状态服务公开端点或创建web api,对于后端逻辑,我们在项目中使用有状态服务;事实上,我对无状态服务没有问题——它们工作得很好。这是我无法通过localhost(或Azure)发布或访问的有状态模板。
http://appname.region.cloudapp.azure.com/
http://appname.region.cloudapp.azure.com/api/values
51.136.XX.XXX/api/values
51.136.XX.XX:80/api/values