none
wcf 流传输,多个客户端 急急急!!! RRS feed

  • 问题

  • wcf流传输,一个服务端多个客户端,我传输的时候为啥报错,传着传着就出问题了,说是读取流发生异常。An exception has been thrown when reading the stream.
    • 已移动 Aspen VJ 2011年5月27日 2:54 (发件人:Visual C#)
    2011年5月25日 10:00

全部回复

  • 注意一下文件流的打开方式,不要使用独占锁,否则,其他线程无法读取该流,如果同时还有其他进程在读它。

    另外,请检查 Exception 的 InnerException,它会提供更加详细的异常文本。


    Mark Zhou
    • 已标记为答案 mister55 2011年5月26日 12:58
    • 取消答案标记 mister55 2011年5月26日 12:58
    2011年5月26日 9:55
  • 不是独占,也不知道为啥报错,弄不明白了
    2011年5月26日 13:30
  • 您好,

    我将你的帖子移到WCF的论坛。在那里你可以得到更专业的WCF回复。谢谢


    Vin Jin [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月27日 2:54
  • Hi mister55,

    你可以在服务端的config文件中将includeExceptionDetailInFaults设置为true,查看Exception的innerException,知道具体的异常信息。也有可能是你的服务端config文件设置不恰当引起这个问题,你可以把你的服务端config文件代码列出来。在客户端config文件中你可以适当增大SendTimeout的值,在服务端config中将ReceiveTimeout值增大.

    谢谢


    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework
    2011年5月27日 3:17
    版主
  • 能具体点吗。

    在什么情况下出错。

    比如,多少个客户端,什么绑定,文件大小,网络情况。

    还有观察一下你的服务器内存,CPU情况


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年5月27日 14:16
    版主
  • 就是两个客户端,一个服务端,网速快的话没问题,要是慢了,就可能出错了

    <?xml version="1.0"?>
    <configuration>
      <system.serviceModel>
        <bindings>
          <!--设置netTcpBinding的接受信息最大数,2147483647传输方式-->
          <netTcpBinding>
            <binding name="TransferFileBinding" maxReceivedMessageSize="1073741824" transferMode="Streamed">
              <security mode="None"/>
            </binding>
           
          </netTcpBinding>
         
        </bindings>
        <services>
          <service name="WCFFileServer.Transfer" behaviorConfiguration="WCFService.WCFServiceBehavior">
            <!--定义终节点ABC-->
            <endpoint address="" binding="netTcpBinding" bindingConfiguration="TransferFileBinding" contract="FileInterface.ITransfer"/>
            <host>
              <baseAddresses>
                <add baseAddress="net.tcp://10.163.157.213:8080/service"/>
              </baseAddresses>
            </host>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="WCFService.WCFServiceBehavior">
              <serviceMetadata httpGetEnabled="false"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

    2011年5月28日 11:39
  • 后来改成这样了,也报错误,网速是200多k

    <?xml version="1.0"?>
    <configuration>
      <system.serviceModel>
        <bindings>
          <!--设置netTcpBinding的接受信息最大数,2147483647传输方式-->
          <netTcpBinding>
            <binding name="TransferFileBinding" maxReceivedMessageSize="124294967296" transferMode="Streamed" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="01:00:00" sendTimeout="01:00:00"
                   
              maxBufferSize="2147483646" maxBufferPoolSize="124294967296" >
              <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
              maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              <security mode="None"/>

            </binding>
           

          </netTcpBinding>
            </bindings>
        <services>
          <service name="WCFFileServer.Transfer" behaviorConfiguration="WCFService.WCFServiceBehavior">
            <!--定义终节点ABC-->
            <endpoint address="" binding="netTcpBinding" bindingConfiguration="TransferFileBinding" contract="FileInterface.ITransfer"/>
                  <host>
              <baseAddresses>
                <add baseAddress="net.tcp://192.168.1.12:8070/service"/>
               </baseAddresses>
            </host>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="WCFService.WCFServiceBehavior">
              <serviceMetadata httpGetEnabled="false"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

     


    2011年5月28日 11:42
  • Hi mister55,

    你可以开启一下WCF Tracing查看服务与客户端所有交互信息,查看一下错误信息。


    #WCF Tracing

    http://msdn.microsoft.com/zh-cn/library/ms733025.aspx


    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework

    2011年5月30日 9:11
    版主