问题标签 [web-farm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2094 浏览

asp.net - 在 IIS 场中为 ASP.NET 应用程序设置会话状态数据库有多难?

为在 IIS 场中运行的 ASP.NET 应用程序设置会话状态数据库有多难?

我收到的建议是永远不要在我的新 ASP.NET 4 / IIS 7 应用程序中以会话状态存储任何内容。这是在我指出该应用程序的容量很小并且在会话中存储很少的讨论之后进行的。我得到这个建议的主要理由是,在我们的网络场中设置 IIS 和数据库来存储会话状态是极其困难的。

0 投票
1 回答
345 浏览

asp.net - ASP.NET 缓存和网络场解决方案

有哪些解决方案可以让缓存与 ASP.NET MVC 站点中的 Web 场一起使用?我知道有第三方缓存提供程序 (NCache),但有没有更简单的方法而无需购买额外的服务?

0 投票
2 回答
729 浏览

asp.net - ASP.NET 图表未在 Web Farm Env 中显示

我们正在使用 Microsoft 的内置 ASP.NET 3.5 图表控件,但有时无法显示图表图像。相反,它显示了一个损坏的图像图标。

我们正在使用 SQL Server 进行会话,并且我们有 2 个服务器的网络场。我们在其中一个论坛上找到了在网络农场环境中使用 STORAGE=SESSION 的建议,但这也不起作用。

这是我们在 web.config 文件中的条目。

<ADD KEY="CHARTIMAGEHANDLER" VALUE="STORAGE=SESSION;TIMEOUT=20;" />

任何人都可以建议为什么图表控件在 Web 农场环境中不起作用。

0 投票
1 回答
450 浏览

asp.net-mvc-3 - Can Squish It 将文件发布到 CDN

我刚刚发现 squish 它,它看起来很有前途,但我需要将我的 js 和 css 脚本上传到我们的 CDN 服务器。我们有 10 个 Web 服务器和一个外部 CDN。

有没有办法将压缩文件上传到 CDN,还是只能在单个服务器上工作。

0 投票
1 回答
400 浏览

asp.net - ASP.NET MS Chart 我可以使用 Http 处理程序从 Web 服务读取和写入临时图像吗

我的应用程序部署到不使用粘性会话的网络场(不幸的是,这不是一个选项)。我想将图表图像写入 Web 服务并从那里读取它,因为客户端浏览器并不总是被重定向到图像被渲染到的同一服务器。由于安全限制,我无法使用文件服务器,并且无法从 IIS 服务直接访问数据库,只能访问 wcf 服务。

0 投票
2 回答
3407 浏览

asp.net-mvc - MVC 3 tempdata 容器的缺点

虽然问题标题看起来有点主观,但我相信没有太多要讨论的。我目前正在开发一个 MVC 项目,我在某些领域使用 TemData 容器。当我阅读 MSDN 中的文档时,似乎使用 TempData 创建了一个会话,并且一旦读取我们存储在 tempdata 中的数据就消失了。我对这个概念很满意,但是今天早上一直困扰我的事情是,当您在 Web Farm 环境中托管您的应用程序时,它的表现如何。

如果将 GET 请求传递给 SERVER 1,这会创建一个 TempData 并将随后的 GET/POST 请求发送到 SERVER 2。

我可能对这个假设完全错误,但我只需要澄清这个问题。

任何输入将不胜感激......

干杯!

0 投票
2 回答
3250 浏览

c# - 在多个服务器和子域上设置持久表单身份验证

我正在尝试跨多个服务器和子域设置表单身份验证。我为每个应用程序设置了静态机器密钥,如下所示:

...并且我的表单身份验证为每个应用程序配置相同:

正如我看到一些人建议的那样,我也尝试在我的域前加上句号,但这也不起作用。

这在我的本地机器上运行良好,在 IIS 中为每个子域设置了单独的站点。它在我们的开发服务器上也可以正常工作,所有站点仍然驻留在一台机器上。但是,当我部署到我们的暂存环境时,跨域身份验证停止工作。在那个环境中,我的主站点(登录发生的地方)运行在单个服务器上,辅助站点(我的身份验证应该持续存在的地方)运行在两个负载平衡的服务器上。所有都在 Windows 7(本地)或 Server 2008 R2(开发和暂存)上的 IIS 7 下运行。

我通过在主站点上编码字符串MachineKey.Encode并在辅助服务器上解码结果来验证机器密钥是否相同MachineKey.Decode.我还通过检查请求验证了 .SHAREDAUTH cookie 是否已传递给请求中的第二个应用程序Firefox 和 Chrome 报告的标头,并将调试器连接到Application_BeginRequestApplication_AuthenticateRequest.我可以在执行期间看到 cookie Application_BeginRequest,但是在调用时它就消失了Application_AuthenticateRequest。据我所知,这似乎意味着身份验证票的反序列化失败,但我无法弄清楚为什么这会发生在多服务器环境中,而不是单服务器环境中,除了不同的机器密钥,我已经确认不是这种情况。

我还设置了自定义 MembershipProvider 和 RoleProvider,它们在每个站点上都可以独立运行。

我错过了什么?

0 投票
1 回答
5627 浏览

asp.net - 如何使用 sql server 会话管理检查 ASPState 数据库中的会话值(用户存在)

我们已经为我的 asp.net 应用程序实现了带有 SQL 服务器会话管理的网络农场。有时这个实现不能正常工作。

我想知道如何在 ASPState 数据库中检查会话值(用户存在),因为我怀疑我的会话不在 ASPState 数据库中。用户在 10 次中有 2 次遇到问题。

0 投票
1 回答
1393 浏览

asp.net - ASP.NET 身份验证 cookie(网络场)

我使用 FormsAuthentication

我有一个有 2 个节点的网络场。我所做的 :

1)我通过我的工厂通过第一个节点登录到我的站点并转到默认页面。

2)我关闭了第一个节点,所以下一个请求应该是我的第二个节点。

3)我正在尝试请求一些页面(如果我已登录,则应该可用),但应用程序将我重定向到登录 url。我认为是因为 cookie 不正确或丢失。

我使用了机器密钥,例如:

但它仍然不起作用。我做的几乎和这里描述的一样:http: //msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

但这对我不起作用。我究竟做错了什么 ?

0 投票
1 回答
87 浏览

.net - 共享列表在网络场中的所有服务器中

我已经阅读了有关存储会话状态的信息out-of-process,但仍通过将 Web 应用程序配置为使用提供程序来存储在内存中,例如StateServer

我有一个List<int>包含accountIDs我想在 webfarm 中的所有服务器之间共享的内容。该列表不是与任何特定帐户相关的会话数据,它是我希望在内存中(但可能是进程外)的全局列表,以便场中的每个服务器可以检查每个请求以查看是否它包含一个accountID.

能否以与共享会话状态相同的方式共享此数据?请问你能详细说明应该如何做吗?

这是一个好的解决方案吗?尝试访问同一个列表的许多服务器是否会对性能造成影响?

编辑:额外进入...

在我的应用程序中,用户帐户有一个_accountStatus,如果设置为暂停,应用程序将使用它来限制用户可以执行的操作。_accountStatus保留在定制的身份验证票证中。问题是用户可以保持登录状态,他们可以在今天登录,一个月后离开并回来仍然登录。同时,站点管理员可能已经暂停了他们的帐户,但是因为_accountStatus 保留在身份验证票证中现在不正确,用户仍然可以访问他们不应该的访问权限。

因此,当管理员更改用户的_accountStatus时,他们的_accountID将添加到the list. 然后在每个请求中检查列表。如果帐户在列表中,那么它必须从数据库中重新加载它的_accountStatus(它始终具有正确的值)并更新身份验证票证。

所以是的,也许将列表保留在 SQL Server 中是最好的解决方案。

另一种解决方案可能是将_accountStatus不存储在身份验证票证中,而是存储在会话中。当一个新会话开始时,它可以被加载。但是现在有一个问题,如果管理员决定在用户​​会话期间暂停帐户怎么办。应用程序如何访问该用户的会话并从外部更新_accountStatusHttpApplication?或者在用户的请求之间,如果你明白我的意思吗?