- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您是否曾经尝试过在具有完整 IIS 和多个角色实例的 Windows Azure 模拟器中运行托管服务?几天前,我注意到 IIS 中一次只有一个 Web 角色的多个实例启动。以下屏幕截图说明了该行为,屏幕截图前面的消息框显示了此行为的原因。尝试启动 IIS 管理器中已停止的网站之一时会出现消息框。
Screenshot: IIS with stopped Websites
示例云应用程序包含两个 Web 角色:MvcWebRole1 和 WCFServiceWebRole1,每个角色都配置为使用三个实例。我的第一个想法是:“当然!在真实的 azure 世界中不会发生端口冲突,因为每个角色实例都是一个自己的虚拟机。它无法在模拟器中运行!”但经过一些研究和分析 azure 计算模拟器的许多部分后,我发现计算模拟器为每个角色实例创建一个唯一的 IP(在我的示例中从 127.255.0.0 到 127.255.0.5)。这篇 MSDN 博客文章 (http://blogs.msdn.com/b/avkashchauhan/archive/2011/09/16/whats-new-in-windows-azure-sdk-1-5-each-instance-in-any微软员工 Avkash Chauhan 的 -role-gets-its-own-ip-address-to-match-compute-emulator-close-the-cloud-environment.aspx)也描述了这种行为。得出这个结论后,我得出了以下问题:为什么计算模拟器(更准确地说是 DevFC.exe)不将适当角色的 IP 添加到每个网站的绑定(bind)信息中???
我手动将 IP 添加到每个网站,tadaaaaa:每个网站都可以启动而不会发生任何冲突。下一个屏幕截图演示了它,并突出显示了更改后的绑定(bind)信息。
Screenshot: IIS with started Websites
再一次:为什么模拟器不帮我做呢?我编写了一个小的静态辅助方法,在每个角色启动时为我执行绑定(bind)扩展操作。也许有人想使用它:
public static class Emulator
{
public static void RepairBinding(string siteNameFromServiceModel, string endpointName)
{
// Use a mutex to mutually exclude the manipulation of the iis configuration.
// Otherwise server.CommitChanges() will throw an exeption!
using (var mutex = new System.Threading.Mutex(false, "AzureTools.Emulator.RepairBinding"))
{
mutex.WaitOne();
using (var server = new Microsoft.Web.Administration.ServerManager())
{
var siteName = string.Format("{0}_{1}", Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Id, siteNameFromServiceModel);
var site = server.Sites[siteName];
// Add the IP of the role to the binding information of the website
foreach (Binding binding in site.Bindings)
{
//"*:82:"
if (binding.BindingInformation[0] == '*')
{
var instanceEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[endpointName];
string bindingInformation = instanceEndpoint.IPEndpoint.Address.ToString() + binding.BindingInformation.Substring(1);
binding.BindingInformation = bindingInformation;
server.CommitChanges();
}
else
{
throw new InvalidOperationException();
}
}
}
// Start all websites of the role if all bindings of all websites of the role are prepared.
using (var server = new Microsoft.Web.Administration.ServerManager())
{
var sitesOfRole = server.Sites.Where(site => site.Name.Contains(RoleEnvironment.CurrentRoleInstance.Role.Name));
if (sitesOfRole.All(site => site.Bindings.All(binding => binding.BindingInformation[0] != '*')))
{
foreach (Site site in sitesOfRole)
{
if (site.State == ObjectState.Stopped)
{
site.Start();
}
}
}
}
mutex.ReleaseMutex();
}
}
}
我按如下方式调用辅助方法
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
if (RoleEnvironment.IsEmulated)
{
AzureTools.Emulator.RepairBinding("Web", "ServiceEndpoint");
}
return base.OnStart();
}
}
最佳答案
我明白了!
我在三台不同的计算机上遇到了这种情况,这些计算机最近都已格式化并安装了全新的 Windows 8、Visual Studio 2012 和 Azure SDK 1.8 以及 Azure Tools。因此,重新安装 Azure SDK 和工具(如 Anton 的建议)不应改变任何内容。但我的三台机器的清洁度才是关键! Anton,您的计算机上是否有 Visual Studio 2010,并且至少安装了 VS2010 SP 1?我用ILSpy分析了IISConfigurator.exe
,发现将网站绑定(bind)信息中的IP设置为'*'
(而不是127.255.0.0.1)的代码。 *
)。它取决于静态属性 Microsoft.WindowsAzure.Common.Workarounds.BindToAllIpsWorkaroundEnabled
。此方法内部使用 Microsoft.WindowsAzure.Common.Workarounds.TryGetVS2010SPVersion
,如果 Visual Studio 2010 的 SP 级别小于 1,则会导致将 IP 绑定(bind)设置为 '*'
. TryGetVS2010SPVersion
检查了四个注册表项,我不知道为什么,但其中一个项存在于我的注册表中并返回 Visual Studio 2010 SP 级别 0(我从未在三台机器中的任何一台上安装过 VS2010) !!!)。当我将 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\DevDiv\vs\Servicing\10.0\SP
的值从 0 更改为 10(大于 0 的值即可)时,Azure 模拟器开始设置 127.255.0.*
IIS中所有网站的绑定(bind)信息的角色IP以及所有网站均启动正确。
关于azure - 在装有 VS2012 但没有 VS2010 的干净计算机上,具有多个角色实例的 Windows Azure 计算模拟器 (SDK 1.8) 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13946634/
有没有一种方法可以使用标准类型构造函数(例如 int、set、dict、list、tuple 等)以用户定义的方式将用户定义类的实例强制转换为其中一种类型?例如 class Example:
我知道这个问题在Stackoverflow中有很多问题,但是即使有很多答案,这些答案也帮不了我什么,也没有找到答案。 在我的WebAPP中,它可以正常工作,但是当我将其转换为API时,它失败了(主题标
这个问题已经有答案了: Why does the ternary operator unexpectedly cast integers? (3 个回答) 已关闭 9 年前。 最近遇到一个Java的陷
我尝试使用 FirebaseApp.configure() 配置 Firebase,但遇到以下崩溃: *** Terminating app due to uncaught exception 'c
我有一个自连接员工实体类,其中包含与其自身相关的 id、name 和 ref 列。我想创建它的新实例并将其保存到数据库。 首先我创建了一个 Employee 类的实例并将其命名为 manager。然后
我有一个用于添加新公寓的表单,在该表单中我有一个下拉列表,用户可以在其中选择负责的人员。 显然,当您从下拉列表中选择并尝试保存公寓时,我的应用程序认为该人已被修改。它给了我下面的错误,指示我应该首先保
从 Visualforce 页面,我需要检索我们组织的 salesforce 实例的 URL,而不是 Visual Force URL。 例如我需要https://cs1.salesforce.com
我遇到了一些可能的问题答案,但这是关于从 Hibernate 3.4.0GA 升级到 Hibernate 4.1.8 的问题。所以这曾经在以前的版本下工作,我已经四处搜索了为什么它在这个新版本中出现了
似乎一遍又一遍地问这个问题,我仍然找不到解决我问题的答案。我在下面有一个域模型。每个新创建或更新的“安全用户”都需要我确保其具有配置文件,如果没有,则创建一个新的配置文件并分配给它。 配置文件的要求相
我很难调试为什么 JPA 不级联我的 @ManyToMany 关系。我发现的所有答案都与缺少级联语句有关。但我确实拥有它们并且仍然得到: Caused by: org.hibernate.Transi
Play 服务 API 表明有一个叫做 Instance ID 的东西 但是,在 Android Studio 中包含以下内容后,我无法导入 InstanceID 类 compile "com.goo
我正在使用 Seam 框架。我有 2 个实体: 请求.java @Entity @Table(name = "SRV_REQUEST") public class Request { private
This question处理构建一个适当的Monad来自单子(monad)的实例,但仅在某些约束下 - 例如Set .诀窍是将其包装成 ContT ,它将约束推迟到包装/展开其值。 现在我想对 Ap
我正在尝试执行此查询: StringBuffer sb = new StringBuffer(); sb.append("select p from PointsEntity p " + "where
我试图了解是否可以更改我的 hibernate 配置并使用单个 MySQL 实例(而不是我当前拥有的多个 MySQL 实例): 我有一个使用 hibernate 的 Java 应用程序,与 2 个模式
我有一个选项卡滑动布局,其中包括四个选项卡,每个选项卡都有自己的布局和 fragment ,在我的主要 Activity 布局中,viewpager 参与更改选项卡。特定 View (选项卡)在应用程
我看到很多帖子声称他们正在运行 MySql 的 RDS 实例,但无法连接到该实例,但我没有运行 RDS。 我使用 EC2 实例来托管我的 WordPress 博客,该博客是使用 Web 平台安装程序安
因为我在我的 ec-2 实例上的 python 虚拟环境中运行应用程序( Airflow ),并且我想在同一个 ec2 实例上的默认 python 环境中运行命令,所以我认为 ssh 到我自己的实例更
这个问题已经有答案了: How to fix the Hibernate "object references an unsaved transient instance - save the tra
例子: run APP1 .. ... run APP1 ... run APP2 如何在 APP2 中对 Vue 说我需要调用 APP1?
我是一名优秀的程序员,十分优秀!