Nancy 在 Azure 辅助角色中自我主持
Nancy Self Host in Azure Worker Role
我部署了一个 azure worker 角色,它作为集成系统的一部分运行一些计划任务。我正在尝试公开一个 http 端点,它将提供一些管理功能,以便我可以远程控制辅助角色的各个方面。
我有工作角色 运行 唯一的问题是我无法从互联网访问 http 端点。
我已经确认 nancy 服务器是 运行,因为当我远程连接到 VM 时,我可以使用本地 IP 地址进行连接。
角色配置如下:
<ServiceDefinition name="Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WorkerRole name="Host.Azure" vmsize="Small">
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
</ConfigurationSettings>
<Startup>
<Task commandLine="mount.cmd" executionContext="limited" taskType="background">
</Task>
</Startup>
<Endpoints>
<InputEndpoint name="http" protocol="http" port="80" localPort="80" />
</Endpoints>
<LocalResources>
</LocalResources>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
</WorkerRole>
</ServiceDefinition>
我正在创建 nancy url 如下:
var endpointName = "http";
var instance = RoleEnvironment.CurrentRoleInstance;
var internalEndpoint = instance.InstanceEndpoints[endpointName];
var uri = new Uri($"{internalEndpoint.Protocol}://{internalEndpoint.IPEndpoint}");
return new NancyUri {Value = uri};
我还需要做些什么才能让它正常工作吗?
它与 windows url acl 配置有关。我以为因为我向 nancy 主机提供了本地 ip,所以它可以工作,但最后我不得不在 http acl 中添加一个条目。
南希url就是这样建立起来的
var uri = new Uri("http://localhost:80");
return new NancyUri {Value = uri};
我将任务设置为运行以下命令
netsh http add urlacl url="http://+:80/" user="Everyone"
csdef文件中引用如下:
<Task commandLine="network.cmd" executionContext="elevated" taskType="background"></Task>
我部署了一个 azure worker 角色,它作为集成系统的一部分运行一些计划任务。我正在尝试公开一个 http 端点,它将提供一些管理功能,以便我可以远程控制辅助角色的各个方面。
我有工作角色 运行 唯一的问题是我无法从互联网访问 http 端点。
我已经确认 nancy 服务器是 运行,因为当我远程连接到 VM 时,我可以使用本地 IP 地址进行连接。
角色配置如下:
<ServiceDefinition name="Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WorkerRole name="Host.Azure" vmsize="Small">
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
</ConfigurationSettings>
<Startup>
<Task commandLine="mount.cmd" executionContext="limited" taskType="background">
</Task>
</Startup>
<Endpoints>
<InputEndpoint name="http" protocol="http" port="80" localPort="80" />
</Endpoints>
<LocalResources>
</LocalResources>
<Imports>
<Import moduleName="RemoteAccess" />
<Import moduleName="RemoteForwarder" />
</Imports>
</WorkerRole>
</ServiceDefinition>
我正在创建 nancy url 如下:
var endpointName = "http";
var instance = RoleEnvironment.CurrentRoleInstance;
var internalEndpoint = instance.InstanceEndpoints[endpointName];
var uri = new Uri($"{internalEndpoint.Protocol}://{internalEndpoint.IPEndpoint}");
return new NancyUri {Value = uri};
我还需要做些什么才能让它正常工作吗?
它与 windows url acl 配置有关。我以为因为我向 nancy 主机提供了本地 ip,所以它可以工作,但最后我不得不在 http acl 中添加一个条目。
南希url就是这样建立起来的
var uri = new Uri("http://localhost:80");
return new NancyUri {Value = uri};
我将任务设置为运行以下命令
netsh http add urlacl url="http://+:80/" user="Everyone"
csdef文件中引用如下:
<Task commandLine="network.cmd" executionContext="elevated" taskType="background"></Task>