Как динамически читать IISExpressSSLPort в Visual Studio - PullRequest
0 голосов
/ 28 февраля 2020

Быстрый вопрос, надеюсь, простой ответ. При работе с веб-проектом в Visual Stud ios, если я включаю SSL, он генерирует URL-адрес SSL.

Проблема, с которой я сталкиваюсь, заключается в том, что при запуске приложения (отладка) оно хочет начать использовать http на любой порт, который есть. Таким образом, мое исправление заключается в основном ..

if (HttpContext.Request.IsLocal == true)
{
   myUriBuilder.Scheme = Uri.UriSchemeHttps;
   myUriBuilder.Port = 44331;
}

Мне бы очень хотелось иметь возможность динамически определять, что это за порт SSL для этого проекта, без необходимости его жесткого кодирования (повторное использование кода)

Я знаю, что порт находится в файле .csproj под узлом IISExpressSSLPort, но если не пытаться проанализировать файл, я подумал, что мне нужно обратиться и узнать, знает ли кто-нибудь способ получить это значение в коде. во время выполнения.

1 Ответ

0 голосов
/ 05 марта 2020

Так что без чистого способа действительно сделать это, я просто использовал свой домашний xml ридер, чтобы получить эту информацию. Вам нужно будет реализовать свой собственный xml ридер (средняя строка), но в основном вы читаете файл только из root (в режиме отладки)

var myXMLTools = new File.XMLTools(Server.MapPath("~/$safeprojectname$.csproj"));

Это будет то место, где вы используете XML считыватель для извлечения узла "/ PropertyGroup / IISExpressSSLPort" и получения его значения ...

string myDevPort = myXMLTools.GetXMLEntry("/").GetChildEntries("PropertyGroup").First().GetProperty(File.XMLTools.PropertyTypes.Element, "IISExpressSSLPort", false).Text;

И теперь у вас есть порт

myUriBuilder.Port = Convert.ToInt32(myDevPort);
...