小编vee*_*ien的帖子

使用Unity时配置WCF客户端的MaxItemsInObjectGraph

对于使用远程WCF服务的工具包,我ChannelFactory<IMyService>在UnityContainer中配置了一个.

现在我想通过代码(使用Unity)配置此通道的端点行为以应用此行为:

<behaviors>
    <endpointBehaviors>
        <behavior name="BigGraph">
            <dataContractSerializer maxItemsInObjectGraph="1000000" />
        </behavior>
        </endpointBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)

我在MSDN上找到了这个例子(http://msdn.microsoft.com/en-us/library/ms732038.aspx)

ChannelFactory<IDataService> factory = new ChannelFactory<IDataService>(binding, address);
foreach (OperationDescription op in factory.Endpoint.Contract.Operations)
{
    vardataContractBehavior = op.Behaviors.Find<DataContractSerializerOperationBehavior>() as DataContractSerializerOperationBehavior;
    if (dataContractBehavior != null)
    {
        dataContractBehavior.MaxItemsInObjectGraph = 100000;
    }
}
IDataService client = factory.CreateChannel();
Run Code Online (Sandbox Code Playgroud)

但现在我被困在Unity配置中试图这样做.我应该调查拦截吗?

.net c# wcf unity-container

7
推荐指数
1
解决办法
3075
查看次数

为什么我的 Service Fabric 参与者使用比预期更多的磁盘空间?

我试图理解为什么我们的演员服务使用的磁盘空间比预期的多。我们的服务目前包含分布在 10 个分区上的大约 80,000 个参与者。每个参与者存储大约 150Kb 的状态。

查看我们集群中的一个(10 个)节点,我希望看到:

  • 用于大约 3 个分区的磁盘空间(一个作为主分区,两个作为辅助分区)
    • 这是预期的
  • 深入到一个分区文件夹中,我希望只看到一个副本 ID
    • 不像预期的那样:
      • 我看到了预期的一个(与 Service Fabric Explorer 中节点部分下列出的副本匹配的那个)。副本 ID 以前缀为前缀R_
      • 在同一个分区文件夹中,我看到其他 3 个文件夹的副本 ID 以 prefix 开头S_。这些副本 ID 与 Service Fabric Explorer 中“应用程序”节点下列出的任何值都不匹配。
  • 查看以 R_ 开头的副本文件夹,我希望该文件夹包含不超过 8000 个演员的大小,每个演员占用大约 150 Kb,因此大约 1.14 Gb 的数据。
    • 不像预期的那样:
      • 该文件夹包含一个文件ActorStateStore,其大小为 5.66Gb

我试图理解的另一件事如下:

  • 我们应用程序的版本 1 没有清理未使用的 actor。正如您所料,我们看到每个节点上的磁盘使用量稳步增长。
  • 我们应用程序的第 2 版开始删除未使用的角色。由于此新代码将超过一半的活跃参与者,因此部署后我预期总体使用的磁盘大小将显着下降。
    • 没有发生,增长停止了,但使用量并没有减少。

所以我的问题是:

  1. 我的期望是否正确?
  2. 什么可以解释我的观察?

azure-service-fabric service-fabric-stateful service-fabric-actor

5
推荐指数
1
解决办法
741
查看次数

如何在Windows Vista上使用netNamedPipeBinding和WAS在Web应用程序中托管WCF服务

我试图在Vista计算机上的Web应用程序中使用netNamedPipeBinding来托管WCF服务.

我启用了非HTTP服务激活,如本文所述:http://msdn.microsoft.com/en-us/library/ms731053.aspx

我按如下方式配置了服务:

<endpoint address="net.pipe://myservice"
binding="netNamedPipeBinding"
bindingConfiguration="MyService_NamedPipeBindingConfig"
contract="ICMyService" />

<netNamedPipeBinding>
    <binding name="MyService_NamedPipeBindingConfig"
         maxBufferSize="2147483647"
         maxReceivedMessageSize="2147483647">
        <security mode="None">
            <transport protectionLevel="None" />
        </security>
    </binding>
</netNamedPipeBinding>
Run Code Online (Sandbox Code Playgroud)

当我浏览到.svc文件(在IIS上,而不是Visual Studio webserver)时,我收到以下消息:

[InvalidOperationException: The protocol 'net.pipe' is not supported.]
   System.ServiceModel.Activation.HostedTransportConfigurationManager.InternalGetConfiguration(String scheme) +11461251
   System.ServiceModel.Channels.TransportChannelListener.OnOpening() +84
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +229
   System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) +72

[InvalidOperationException: The ChannelDispatcher at 'net.pipe://myservice' with contract(s) '"IMyService"' is unable to open its IChannelListener.]
   System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) +118
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +261
   System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +107
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +261
   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +121
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479

[ServiceActivationException: The …
Run Code Online (Sandbox Code Playgroud)

wcf was netnamedpipebinding windows-vista

4
推荐指数
1
解决办法
5850
查看次数