2015-04-13 3 views
0

Я написал сервер в C# для JS-клиента. Решение состоит из restApi BL и DAL.Получение ссылки для виртуального каталога

BL создает ссылки для изображений, хранящихся в виртуальном каталоге на сервере. JS и код сервера хранятся в одном каталоге.

Когда я создаю строку ссылке, которую я использовать эту строку кода:

string keyImageName = Settings.Default.ServerUrl + 
    Settings.Default.KeyImagesFolder + relatedFinding.KeyImagePath;` 

где KeyImageFolder является виртуальный каталог.

Он работает нормально, но моя проблема заключается в том, что на веб-сайте есть несколько экземпляров Amazon, по одному для каждой географической зоны, поэтому каждый раз, когда я развертываю, мне нужно изменить ip в настройках. Это раздражает.

Есть ли способ получить URL-адрес виртуального каталога, в частности, для каждой машины?

Если JS установлен на том же компьютере, что и сервер, действительно ли нужен полный путь?

Большое спасибо

+0

Посмотрите [здесь] (http://stackoverflow.com/questions/40680/how-do-i-get-the-full-url-of-the-page-i-am -он-в-с-диез). –

+0

вы можете прочитать общедоступный IP-адрес этого экземпляра, и если IIS указывает на корневой путь, вы можете напрямую использовать этот IP-адрес. –

ответ

1

Во-первых, вам необходимо получить физический путь к файлу или каталогу, который вы хотите, чтобы создать URL для. Это можно сделать в объекте страницы, используя Request.ApplicationPath.

Далее этот путь может быть преобразован в URL-адрес, используя функцию Server.MapPath. Это будет учитываться, если в IIS есть несколько сайтов, привязанных к одному и тому же пути.

var physicalPath = Path.Combine(Request.ApplicationPath, Settings.Default.KeyImagesFolder, relatedFinding.KeyImagePath); 
var resourceUrl = Server.MapPath(physicalPath); 
Смежные вопросы