Azure员工角色中的南希自我主持人

时间:2016-06-24 15:08:03

标签: azure nancy

我部署了一个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};

还有什么我需要做的才能让它发挥作用吗?

1 个答案:

答案 0 :(得分:0)

它与windows url acl config有关。我想是因为我将本地ip提供给南希主机它会起作用,但我最后必须在http acl中添加一个条目。

nancy 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>