2016-06-24 5 views
0

У меня есть роль рабочего лазурного рабочего, которая запускает несколько запланированных задач как часть системы интеграции. Я пытаюсь разоблачить конечную точку http, которая будет предоставлять некоторые административные функции, чтобы я мог удаленно управлять аспектами рабочей роли.Nancy Self Host в роли лазурного рабочего

У меня есть рабочая роль и работает только одна проблема заключается в том, что я не могу получить доступ к конечной точке HTTP из Интернета.

Я подтвердил, что сервер nancy работает с тех пор, как я удаляюсь на виртуальную машину, которую я могу подключить, используя локальный 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> 

я создаю URL Nancy следующим образом:

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}; 

Есть ли что-то еще, что мне нужно сделать, т о, чтобы получить эту работу?

+0

ваше здание Uri выглядит подозрительным, поскольку вы захватываете '.Protocol'. Есть свойства под '.IPEndpoint', которые вы, вероятно, захотите использовать (я не могу вспомнить данные на данный момент). –

ответ

0

Это связано с конфигурацией url acl windows. Я думал, потому что я поставлял локальный ip для хоста nancy, но он должен был добавить запись в http acl в конце.

Ненси URL застраивается как этот

var uri = new Uri("http://localhost:80"); 
return new NancyUri {Value = uri}; 

I настроить задачу выполнить следующую команду

netsh http add urlacl url="http://+:80/" user="Everyone" 

Какие ссылки в файле csdef следующим образом:

<Task commandLine="network.cmd" executionContext="elevated" taskType="background"></Task> 
Смежные вопросы