- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要在 Windows Azure 项目中即时更改一些配置设置 - 并且需要通过 Web 服务调用来更改它们(通过平台 api 或 Azure 管理站点更新应用程序的配置是不可行的)此处有一个选项)。
该项目具有多个 Web 和辅助角色 - 所有这些角色都需要在新配置发生更改时了解它。
配置会持久保存到持久存储中,并且还会在运行时缓存在静态变量中。
我的解决方案是在我的角色上创建一个内部 (tcp) 端点,并使用它循环遍历这些角色中的所有角色和实例,动态创建客户端,并告诉实例有关新设置的信息。 (与: http://msdn.microsoft.com/en-us/gg457891 几乎相同)
起初,我在 WebRole 的 RoleEntryPoint 中启动了一个 ServiceHost...我很困惑,为什么当我逐步完成通信(静态变量设置正确)时,一切似乎都工作正常 - 然而当我制作其他webservice 调用时,静态变量似乎“忘记”了我设置的内容。
本地和 Azure 临时环境都是这种情况。
此时我意识到,因为我们使用的是完整 IIS 模式,所以 RoleEntryPoint 和 Web 服务在两个单独的进程中运行 - 一个在 Azure 的 stub 中,另一个在 IIS 中。
“没问题”我说,我只需将启动 ServiceHost 的代码行从 RoleEntryPoint 移动到 global.asax 中 - 此时 ServiceHost 将在与其余部分相同的进程中启动站点 - 和静态变量将是相同的。
这就是我遇到问题的地方;这在我的开发环境中运行的本地计算机上非常有效。一旦我部署到登台,我就开始收到错误电子邮件,指出用于连接到服务的 channel 无法关闭,因为它处于“故障状态”。
问题:
后续:
通过远程桌面我学到了一些有趣的事情:
默认情况下,Azure WebRoles 上不安装非 HTTP 激活。我相信这可以通过启动脚本来克服:
开始/w pkgmgr/iu:WCF-NonHTTP-Activation;
Web 角色在 IIS 中创建的网站默认未启用 net.tcp 协议(protocol)。我也相信这可以通过启动脚本来克服:
%systemroot%\system32\inetsrv\appcmd.exe 在此处设置应用程序“网站名称”/enabledProtocols:https,http,net.tcp
我没有时间完全接受这一切,因为截止日期迫使我暂时实现一些解决方法。
与此主题相关的一些有用链接:
http://msdn.microsoft.com/en-us/magazine/cc163357.aspx
http://forums.iis.net/t/1160443.aspx
最佳答案
更新(2011 年 6 月 27 日):
令人惊讶的是,微软的某人(我评论了他的博客)实际上给了我这个问题的答案。
Azure 和 WCF 团队更新了这篇文章:
该链接包含您进行此操作所需的所有信息。
非常感谢 MSFT PM Yavor Georgiev 获胜。
<小时/>自从我问这个问题以来已经有一段时间了,但没有答案,所以让我留下这个:
根据我在帖子中的后续内容,有很多方法可以实现这项工作......但它们很复杂且难以实现。
对于 worker 角色,netTcpBinding 工作得很好。这里没有问题。继续使用它吧。
对于 WEB 角色,您会遇到问题。但是 netTcpBinding 是您需要用来公开内部端点的。该怎么办?
好吧,这就是我所做的:
它并不完美......但它有效,而且并不糟糕。
我怀疑需要做这种事情并不常见,而且我真的想不出除了在运行时动态修改设置之外您还需要这样做的任何原因......这意味着您'不要疯狂地抨击这些服务。
显然,YMMV。
关于c# - Azure:使用 Full-IIS 进行 Web 角色内通信 (netTcpBinding),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085613/
我有一个 WCF 服务,它使用具有消息安全性和用户名身份验证的 NetTcpBinding。在此之前,我使用 WsHttpBinding 但我切换到 NetTcp,因为我可以使用回调。 我的服务配置如
我正在运行 WCF 服务,除其他外,它用作网站的后端。因为网站和 WCF 服务都运行在同一台机器上,为了性能,我设置了一个 netTcpBinding。 现在的问题是,因为它们存在于同一个盒子上,我真
我正在使用 wcf nettcpbinding 传输文件(使用流媒体),但我无法传输大于 650 MB 的文件。这是异常(exception):“套接字连接已中止。这可能是由于处理您的消息时出错或远程
Book Essential WCF 声称 NetTcpBinding.MaxConnections 限制到端点的连接数。因此,如果属性值设置为 10,则该端点将只允许 10 个并发连接。 可是下面的
我有一个使用 netTcpBinding 和回调方法的主机/客户端 WCF 服务和客户端。
谁能解释这个错误的含义: The .Net Framing mode being used is not supported by blah blah yadda 我找不到任何有值(value)的信息
我在尝试解决 WCF 中的设置困境时遇到了以下问题... 我使用 NetTcp 绑定(bind)创建了 WCF 客户端-服务器服务。我没有对安全设置进行任何更改,并且在一台计算机上运行时它运行得非常好
我有一个作为 Windows 服务托管的 WCF 服务,客户端是一个使用 WCF 服务方法的 ASP.Net 应用程序。 在实现安全性的过程中,我很困惑 netTcpBinding/wsHttpBin
我知道已经有很多关于此问题的问题,但没有回复解决我的问题。 我在运行的服务器上有一个 NetTcpBinding,并且时不时地(并非总是如此,例如 20 到 60 次调用中的 1 次,完全随机)我在客
我正在使用 WCF 与多个服务器通信。 对于我的本地服务器,netTcpBinding 工作正常,没有问题。 但是当我尝试使用 app.config 中的以下 netTcpBinding 连接到我的远
我需要保护使用 netTcpBinding 并直接与基于 Windows 窗体的应用程序连接的 WCF 服务。我只需要在传输层保护它。 我非常确定它在本地运行,即我可以在本地运行该服务,并与客户端连接
NetTCPBinding 是否支持回调?如果是这样,请将我重定向到任何适当的示例。谢谢 最佳答案 考虑使用 Duplex Messaging .NetTCPBinding 原生支持它,与 HTTP
我有一个由 Windows 服务托管的 WCF 服务。它与网络中的零到多个客户端具有发布/订阅关系。绑定(bind)是 net.TCP。 WCF 服务向客户端提供“订阅”方法,以便客户端可以注册回调处
我在使用 netTcpBinding 时异步执行对 WCF 服务的调用时遇到问题。 例如。我有一个简单的服务,方法如下: public class Service1 : IService1
我有一个处理一些敏感数据的 WCF 服务。我想确保我不让这些数据暴露,所以我正在查看 netTCPBinding...主要是因为我可以控制它运行的网络并且性能是重中之重。 我知道有两个区域可以加密:传
我有一个基本的好友列表类型的应用程序,它是 WCF 中的发布/订阅交易。我的问题是其中一两个调用长时间运行,这会阻塞整个服务器应用程序(GUI 更新等)。 这是我的代码: [ServiceContra
我通常在我的服务中使用 HTTP 绑定(bind)。 我读到 net.tcp 绑定(bind)工作得更快,但是我不太确定我应该什么时候使用它? 什么是最佳实践,有什么缺点吗? 谢谢 最佳答案 NetT
使用 WCF 制作客户端/服务器样式的应用程序,但我找不到任何说明 NetTcpBinding 是否提供持久连接的文档? 我希望我的客户端一次连接并与服务器保持连接数周。 (是的,我知道我需要处理断开
我使用 NetTcpBinding 中的 Streamed TransferMode 和 System.IO.Stream 对象编写了一个可以转换任何大小文件的 WCF 服务。 在运行性能测试时,我发
我正在使用具有“传输”安全性(“Windows”凭据和“EncryptAndSign”保护)的 netTcpBinding。我已经知道 Kerberos(在 SPNEGO 之后)用于验证客户端和服务器
我是一名优秀的程序员,十分优秀!