visual-studio-2010 - 如何指定我的应用程序绑定(bind)的 IP 地址?

标签 visual-studio-2010 azure azure-web-roles azure-compute-emulator

我们正在开发一个相当复杂的系统,涉及一些不同的应用程序(MVC、基于 http 的 WCF、基于 TCP 的 WCF、ADFS 和一些通用辅助角色),所有这些都部署到 Azure。对于本地调试,我们需要它们在本地 Dev Fabric 以及 IIS 中运行。我已经完成了几乎所有我需要的事情,并且一切正常,除了一件事:我无法预测各种事物将在 Dev Fabric 中绑定(bind)到什么 IP 地址。有时是 127.0.0.1,有时是 127.0.0.3,有时是 127.0.0.4(也许还有其他一些?)。对于我的配置文件转换和 ADFS 依赖方信任,我需要提前知道这些 IP 是什么。

如何专门为我的网站管理/控制(或至少预测)这些 IP 地址? (WCF 都很好) 如果我实际上可以将所有内容部署到我的开发结构并引用正确的 IP,那么一切都会正常!然而,这样做非常麻烦,并且每次需要时都需要对 web.config 和 app.config 转换文件进行多次调整(更不用说每次更改时重新配置 ADFS 服务器),因此这不是一个可持续的情况任何手段!

最佳答案

我们在 ASP.NET MVC 解决方案中遇到了类似的挑战,该解决方案使用第二个 Web 角色来运行 Claims-Based Authentication 的 WIF STS 。在本地模拟器中运行时,MVC 应用程序的 web.config 需要知道 STS 的非负载均衡器 IP 地址。

此外,我们还有自定义代码构建 URL 路由,只能看到模拟器分配的内部 IP 地址 (127.255.0.X)。这些路由在通过负载均衡器传回时会导致问题。我们还关闭了 IIS 中的默认网站,以保证模拟器完成端口重新映射。

使用 Azure 1.8 SDK,我们观察到当从命令行启动应用程序并且删除开发结构中的所有其他部署时,本地模拟器将始终分配 127.255.0.X 地址。

我们构建了一个 PowerShell 脚本,以便在将解决方案打包到 VS2010 中后从命令行启动 Web 角色。我们有一个名为 AzureLocal 的构建配置和 Web 转换,用于为本地模拟器打包。

Import-Module WebAdministration
Stop-WebSite 'Default Web Site'

$env:WindowsAzureEmulatorInstallPath = (Get-ItemProperty -Path "Registry::HKLM\Software\Microsoft\Windows Azure Emulator" -Name InstallPath).InstallPath
$env:ServiceHostingSDKInstallPath = $env:WindowsAzureEmulatorInstallPath + '.NET SDK\2012-10'

$env:Path = $env:WindowsAzureEmulatorInstallPath + 'emulator;' + $env:WindowsAzureEmulatorInstallPath + 'devstore;' + $env:ServiceHostingSDKInstallPath + 'bin;' + $env:Path

csrun /devfabric:start
csrun /devstore:start
csrun /removeAll
csrun /devfabric:clean

csrun Application\Foobar.Extensions.Azure\csx\AzureLocal Application\Foobar.Extensions.Azure\bin\AzureLocal\app.publish\ServiceConfiguration.Local.cscfg

Write-Host "Application Pools to Attach for Debugging"
get-item IIS:\AppPools\*

$ie = New-Object -ComObject InternetExplorer.Application
$ie.Navigate("https://127.255.0.1:444")
$ie.Visible = $true

您的应用程序听起来比我们的 STS 和 MVC 组合有更多的移动部件,但如果您可以在 Visual Studio 之外编写启动脚本,那么您可以获得可预测的地址分配。

关于visual-studio-2010 - 如何指定我的应用程序绑定(bind)的 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14900236/

相关文章:

c++ - 难以理解 free() 的行为

c++ - 双模板函数重载失败

visual-studio - Visual Studio 2010 中的滚动锁定错误

c# - Azure 应用服务的运行状况/准备情况探测

Azure AD SSO SingleLogoutService 在联合元数据中没有 POST 绑定(bind)

Azure CDN - 启用 HTTP 压缩 - 托管 Web 角色

visual-studio-2010 - VS 2010 安装项目需要 .NET 4.0,但已安装

在 ARM 模板中定义时未应用 Azure 服务总线筛选器

c# - 从本地主机外部访问 DevFabric

azure - 在 Azure Web 角色中安装 New Relic .NET 代理