问题标签 [was]

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 回答
206 浏览

wcf - WCF 诊断跟踪和 WAS 托管?

我有一组 WAS 托管服务,配置为使用在 IIS AppPool 用户帐户下运行的 net.tcp。使用 WAS 托管服务时,我很难从它们中获取任何诊断跟踪以跟踪问题。当在控制台应用程序中使用自托管时,使用 c:\logs\trace.svclog 作为跟踪输出的相同服务可以正常工作。

使用 WAS 托管时,我似乎根本没有得到任何跟踪输出,是否需要任何特殊设置才能在 WAS 下获取跟踪输出?我为 IIS AppPool\MyAppPool-user 设置了一个固定的跟踪输出路径并为该文件夹分配了权限。

/每萨尔米

0 投票
4 回答
1586 浏览

wcf - 用于非 HTTP 协议应用程序的 Elmah 或没有 HttpContext 的 Elmah

我们正在开发一个 3 层应用程序,并且我们被允许使用最新最好的(MVC2、IIS7.5、WCF、SQL2k8 等)。应用程序层通过 WCF 服务向各种 Web 应用程序公开。由于我们同时控制服务端和客户端,因此我们决定使用 net.tcp 绑定,因为它们的性能优于 HTTP。

我们希望在 Web 应用程序和服务上使用ELMAH进行错误记录。这是我的问题。有很多关于将 ELMAH 与 WCF 结合使用的信息,但都是针对 HTTP 绑定的。有谁知道您是否/如何将 ELMAH 与暴露非 HTTP 端点的 WCF 服务一起使用?

我的猜测是否定的,因为 ELMAH 需要 HttpContext,这需要在 web.config 中将AspNetCompatibilityEnabled标志设为 true。来自MSDN

IIS 7.0 和 WAS 允许 WCF 服务通过 HTTP 以外的协议进行通信。但是,在启用了 ASP.NET 兼容模式的应用程序中运行的 WCF 服务不允许公开非 HTTP 终结点。当服务接收到它的第一条消息时,这样的配置会生成一个激活异常。

如果确实不能将 ELMAH 与具有非 HTTP 端点的 WCF 服务一起使用,那么接下来的问题是:我们能否以不需要 HttpContext 的方式使用 ELMAH?或者更一般地说(以免犯薄金属尺错误),有没有办法将 ELMAH 与具有非 HTTP 端点的 WCF 服务一起使用?

注意:我知道我们可以下载 Elmah 源代码并将其更改为添加 shim 或删除 HttpContext 依赖项,但我试图避免分叉代码。

0 投票
4 回答
7935 浏览

wcf - restart/iisreset 禁用 NET.TCP 协议?

我在 Windows Server 08 sp2 上的 IIS7 中托管 WCF 服务。该服务作为其自己的网站托管,并通过 NET.TCP 端点公开。在发出重新启动/iisreset 命令之前,该服务运行良好。

重新启动或 iisreset 后,当我进行任何服务调用时,我收到以下错误:'System.ServiceModel.EndpointNotFoundException: The message could not be dispatched because the service at the endpoint address 'net.tcp://[website]/[ service_name].svc'对于地址的协议不可用..'

服务器的事件日志显示以下错误:'尝试读取和实例化配置的 ProcessHandlerType 时发生错误。异常:System.ArgumentException 消息:未知协议 ID 'NET.TCP'。StackTrace:在 System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel(String protocolId, IListenerChannelCallback listenerChannelCallback) '

问题:我该如何解决这个问题?为什么 NET.TCP 协议在 iisreset 后被禁用?它是一个错误吗?我错过了一些配置吗?

IIS 设置详细信息: - Server 08 和 08 R2 - 绑定:http、NET.TCP (808:*) - EnabledProtols:http、NET.TCP。- 站点的 appPool 的身份设置为特定用户。

此处提供示例代码:http: //drop.io/wcfTcpSampleService

谢谢

0 投票
2 回答
1652 浏览

wcf - WAS 托管的 WCF 服务中单个合同的多个端点?

如果需要为异构环境中的单个合同公开多个端点(例如,一个带有 basicHttpBinding,另一个带有 netTcpBinding),在 WAS 托管的服务上,如何做到这一点?

我读到的关于端点的 WAS 配置的所有内容都表明端点地址和主机基地址应该留空,因为 WAS 应该通过 .svc 文件和协议的路径自动解析地址。

但是,如果不说明地址,似乎不可能为同一个合约定义一个 HTTP 端点和一个 TCP 端点。到目前为止,我的每一次尝试都让我梦寐以求的“绑定实例已经与监听 uri 相关联”错误。

想法?

谢谢

0 投票
2 回答
1334 浏览

c# - 您能否将 IIS7 配置为在应用程序池启动/回收时自动启动 Windows Process Activation Service (WAS) 应用程序?

IIS 7.5 引入了自动启动提供程序的概念,它允许您让 WAS 在应用程序池启动时自动加载应用程序或程序集。

可以用 IIS7 实现类似的事情吗?

基本上,我们有一个在 WAS 下运行的应用程序,并且有一个内存中的数据缓存。当应用程序池回收发生时,我的 WAS 部署应用程序实际上不会被激活,直到收到第一次命中。这意味着当收到第一个命中时缓存是冷的。能够在应用程序池回收后立即预启动应用程序会很好。

我们考虑过的其他选择是:

  • 将应用程序部署为 Windows 服务,这样它就不会重新循环(这会起作用,但是 IIS/WAS 的应用程序生命周期管理是一个有用的东西,除了这个问题)

  • 编写一个单独的服务,它的工作是 ping 我们的应用程序以预热它。

但是,最好的方法是让 IIS7/WAS 为我们执行此操作。

0 投票
2 回答
704 浏览

iis-7 - 如何为 WAS 激活实现自定义消息队列侦听器?

我正在编写 .Net 4.0 Web 解决方案的组件(在 IIS7、WS2008 上),并且需要提供可以使用消息队列中的消息的服务。我找到了使用 MSMQ 配置 WAS 服务激活的设置示例……但我们没有使用 MSMQ(使用 RabbitMQ),我很确定我必须实现自己的某种侦听器。

我想我的问题是我必须设置的配置设置系统非常不透明,文档也不清楚。

所以 A:我如何为 WAS 服务激活实现和配置自定义侦听器。

和 B:任何有关配置此设置其余部分的建议都会很棒。

谢谢

0 投票
2 回答
282 浏览

.net - 如何为 SOA 有效管理/托管许多 WCF 服务

我当前的架构非常适合 SOA。

这些服务是使用 WCF 编写的,并且一切都是 .NET(不需要互操作性)。

首先,我使用 ServiceHost 在 Windows 服务中托管 WCF 服务。

但是现在服务的数量正在增长,我正在重新考虑将它们作为单独的 Windows 服务的选择。

我知道我可以使用“WAS”将它们托管在 IIS 中。但我不确定利弊。(这都是关于管理的,所以我并不是想获得更好的性能/可扩展性)。

我之前使用过一些 SOA“解决方案”,例如 WebMethods。虽然开发体验很糟糕,但他们确实有一些很好的概念和一些你可以免费获得的东西,比如 BPM、状态机监控、消息记录和重放等。我想知道在这些方面是否有任何适用于 Windows 和 .NET 的轻量级. 实际上将 WCF、MSMQ、IIS 等结合在一起的东西。

0 投票
1 回答
1048 浏览

wcf - DI 与 WCF -- 使用 WAS 托管时在哪里初始化 Windsor 容器?

我正在阅读一篇关于如何在 WCF Services 中使用依赖注入的优秀文章。不幸的是,它只展示了如何在 global.asax 文件中实例化和注册 Windsor 容器。我希望将 WAS 用于我的托管,因此不会调用 global.asax。有谁知道我应该在哪里注册容器?我是否必须扩展 WindsorServiceHostFactory 并在其中进行操作?

0 投票
1 回答
1542 浏览

wcf - WAS 托管 WCF 服务和 log4net

尝试使用 log4net 记录我的应用程序时遇到问题。我的应用程序由 WCF 服务和连接到它的客户端组成。在客户端登录不是问题,一切正常。

这是我的服务器端的制作方式:

  • 一个 WCF dll,其中包含我的服务的合同和基本实现(包括错误处理)。实际操作是在一个单独的业务层中进行的,它会抛出所需的异常,这些异常被实现捕获(并使用 FaultContracts 发回)。
  • 数据层(这里不是问题)。
  • 一个“Utils”库,其中包含我的包装器日志方法。

我的 log4net.config 文件如下:

因此,当业务层发生错误时,会被捕获、记录并转换为 FaultException。有问题。没有创建日志文件。我用谷歌搜索并找到了一些线索(通常是访问权限,但我使用 ProcMon 并没有找到对所需文件或目录的调用)。

我现在有点迷茫,我不知道该尝试什么。

我在visual studio中使用“发布”命令发布我的服务,所以在服务器上我有我的应用程序目录,里面有一个svc文件,一个web.config文件,然后是一个bin目录,里面有我所有的dll,包括log4net。 dll 和 log4net.config。我试图将该配置文件复制到我的应用程序的根目录中,但没有成功。

我还尝试将 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 语句放在我的 WCF 的 AssemblyInfo.cs 中(它最初位于 Utils 的 AssemblyInfo.cs 中),但没有任何成功。

感谢您的帮助,欢迎任何想法!

0 投票
1 回答
635 浏览

wcf - 使用 tcp 绑定和多个端口在单个站点中的 IIS 中托管 WCF 服务

我使用 net.tcp 绑定在 IIS 中托管的 WCF 服务存在性能问题。

我们最近将系统从 COM+ 移植到 WCF,测试表明性能下降。我一直在查看服务器上的性能计数器,CPU 利用率非常低(< 10%),可用内存充足,磁盘读取正常等...我还检查了 WCF 性能计数器和未完成的数量调用次数很少(在任何给定时间最多 1 次),每秒调用次数非常低(系统使用最多的服务每秒调用 16 次)。我们所有的服务都配置为每次调用和单线程......

我已经玩过节流并将所有设置的所有值设置为 100(服务器是 8 核机器,我的理解是实际的节流值最终是您设置的值乘以 CPU 数量)。我不认为那里有问题。

我还确保客户端有效地使用它的连接(而不是在存在可以使用的现有 tcp 连接的情况下创建新连接)

当前的 Web 应用程序托管大约 50 个服务(是的,就是 50 个!),目前我正试图消除这个问题的根源。我正在考虑在多个 Web 应用程序中托管服务,我也想让它们使用不同的端口,但我遇到了一些问题,我无法在任何地方的互联网上找到分步说明,所以我希望这里有人可以帮助我:)

到目前为止,这是我尝试做的事情:
1)我在 IIS 中向默认网站添加了另一个绑定(也就是说,我有两个 net.tcp 绑定,一个设置为使用“808:*”绑定信息和另一个使用“809:*”) 2)我确保这些端口被允许通过防火墙
3)然后我尝试配置每个单独的 Web 应用程序以过滤端口(这是来自 web.xml 的片段)配置我想使用端口 808):

<
serviceHostingEnvironment> <baseAddressPrefixFilters>
<add prefix="net.tcp//<servername>:808"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>

当我尝试连接到该服务时,我得到一个端点地址“net.tcp://<servername>/SomeService.svc”的服务对于地址的协议不可用

如果我删除 <serviceHostingEnvironmentgt; 少量。我在这里做错了什么?

其他服务,例如我想在端口 809 上可用的服务根本不可用,我收到的错误消息告诉我端点不存在,看起来 IIS 根本没有在那个端口上监听。如前所述,防火墙绝对允许此端口通过。

非常感谢任何关于托管这么多服务时最佳设置的想法或建议!

谢谢!