基础连接已经关闭: 连接被意外关闭

时间:2021-09-23 17:28:04
调用Wcf服务时候抛出异常:基础连接已经关闭: 连接被意外关闭
WCF功能读取Active Directory 信息返回ArrayList
WCF服务:

namespace DomainReader.Service
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IServiceDomainReader”。
    [ServiceContract]
    public interface IServiceDomainReader
    {
        [OperationContract]
        ArrayList GetAllUser();

    }
}
namespace DomainReader.Service
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“ServiceDomainReader”。
    public class ServiceDomainReader : IServiceDomainReader
    {
        
        public System.Collections.ArrayList GetAllUser()
        {
            ADManager _ADManager = ADManager.Instance;
            return _ADManager.LoadAllUsers();

            
        }
    }
}

Client调用
[code]
  public void Get()
        {
            
         ServiceReference1.ServiceDomainReaderClient c = new ServiceReference1.ServiceDomainReaderClient();
            
         ArrayList list=   c.GetAllUser();
        }
[/code]

14 个解决方案

#1


Client调用
   public void Get()
        {
            
         ServiceReference1.ServiceDomainReaderClient c = new ServiceReference1.ServiceDomainReaderClient();
            
         ArrayList list=   c.GetAllUser();
        }

#2


顶上去,绑定有份

#3


检查binding配置
检查防火墙设置,服务端口是否已经设置为安全端口。
检查WCF服务地址是否正确。
配置终结点基于HTTP协议

#4


引用 3 楼 wuyq11 的回复:
检查binding配置
检查防火墙设置,服务端口是否已经设置为安全端口。
检查WCF服务地址是否正确。
配置终结点基于HTTP协议

设断点调试,可以跟进去并获得数据,但是返回值的时候就抛异常了

#5


帮顶0.0

#6


看不出来啥,不过WCF是不支持链表的,先用个string试试

#7


引用 6 楼 iwxiaot 的回复:
看不出来啥,不过WCF是不支持链表的,先用个string试试

支持的在客户端可以在服务引用设置 中去选择一下

#8


在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

#9


帮顶有份啊

#10


WCF服务端配置文件

<?xml version="1.0"?>
<configuration>
  
  <configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/></sectionGroup></sectionGroup></sectionGroup></configSections>
  <system.net>
  
    <settings >
      <httpWebRequest useUnsafeHeaderParsing="true" />
    </settings>
  </system.net>
  
  <system.web>
    <httpRuntime executionTimeout="900" maxRequestLength="102400" useFullyQualifiedRedirectUrl="false" />

    <compilation debug="true">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></controls></pages>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpModules></system.web>
  
  <system.serviceModel>
   
    <bindings>
      
      <basicHttpBinding>
        
        <binding name="basicHttpBinding" closeTimeout="00:05:00" 
                receiveTimeout="00:05:00"  maxBufferSize="992048000" maxBufferPoolSize="991048576" maxReceivedMessageSize="992048000"/>
      </basicHttpBinding>
    </bindings>
    <services>
      
   <service behaviorConfiguration="DomainReader.Service.ServiceDomainReaderBehavior"
    name="DomainReader.Service.ServiceDomainReader">
    <endpoint address="" binding="basicHttpBinding" contract="DomainReader.Service.IServiceDomainReader">
     <identity>
      <dns value="localhost" />
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
   </service>
  </services>
  <behaviors>
   <serviceBehaviors>
  
    <behavior name="DomainReader.Service.ServiceDomainReaderBehavior">
     <serviceMetadata httpGetEnabled="true" />
     <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
   </serviceBehaviors>
  </behaviors>
 
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></modules>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory"/>
<remove name="ScriptHandlerFactoryAppServices"/>
<remove name="ScriptResource"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></handlers></system.webServer>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/></compiler></compilers></system.codedom>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly></assemblyBinding></runtime></configuration>

#11


返回时候出错有可能是序列化时出问题

#12


实在无能为力

#13


问题已解决,原来是程序中循环引用导致的异常,ADUser对象有一个属性ADGroup集合属性,而ADGroup对象中又存在ADUser集合属性,在此处引发的异常,究其根本还是WCF中不能包含这种用法。因为我在测试这个类库的时候这两个属性是都可以取到值的。

#14


引用 13 楼 liushengpiaoxu 的回复:
问题已解决,原来是程序中循环引用导致的异常,ADUser对象有一个属性ADGroup集合属性,而ADGroup对象中又存在ADUser集合属性,在此处引发的异常,究其根本还是WCF中不能包含这种用法。因为我在测试这个类库的时候这两个属性是都可以取到值的。

我在弄WCF的时候也出现了这个问题。不明白,你的代码里面哪里出现了ADUser和ADGroup啊?

#1


Client调用
   public void Get()
        {
            
         ServiceReference1.ServiceDomainReaderClient c = new ServiceReference1.ServiceDomainReaderClient();
            
         ArrayList list=   c.GetAllUser();
        }

#2


顶上去,绑定有份

#3


检查binding配置
检查防火墙设置,服务端口是否已经设置为安全端口。
检查WCF服务地址是否正确。
配置终结点基于HTTP协议

#4


引用 3 楼 wuyq11 的回复:
检查binding配置
检查防火墙设置,服务端口是否已经设置为安全端口。
检查WCF服务地址是否正确。
配置终结点基于HTTP协议

设断点调试,可以跟进去并获得数据,但是返回值的时候就抛异常了

#5


帮顶0.0

#6


看不出来啥,不过WCF是不支持链表的,先用个string试试

#7


引用 6 楼 iwxiaot 的回复:
看不出来啥,不过WCF是不支持链表的,先用个string试试

支持的在客户端可以在服务引用设置 中去选择一下

#8


在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)

#9


帮顶有份啊

#10


WCF服务端配置文件

<?xml version="1.0"?>
<configuration>
  
  <configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/></sectionGroup></sectionGroup></sectionGroup></configSections>
  <system.net>
  
    <settings >
      <httpWebRequest useUnsafeHeaderParsing="true" />
    </settings>
  </system.net>
  
  <system.web>
    <httpRuntime executionTimeout="900" maxRequestLength="102400" useFullyQualifiedRedirectUrl="false" />

    <compilation debug="true">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></controls></pages>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpModules></system.web>
  
  <system.serviceModel>
   
    <bindings>
      
      <basicHttpBinding>
        
        <binding name="basicHttpBinding" closeTimeout="00:05:00" 
                receiveTimeout="00:05:00"  maxBufferSize="992048000" maxBufferPoolSize="991048576" maxReceivedMessageSize="992048000"/>
      </basicHttpBinding>
    </bindings>
    <services>
      
   <service behaviorConfiguration="DomainReader.Service.ServiceDomainReaderBehavior"
    name="DomainReader.Service.ServiceDomainReader">
    <endpoint address="" binding="basicHttpBinding" contract="DomainReader.Service.IServiceDomainReader">
     <identity>
      <dns value="localhost" />
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
   </service>
  </services>
  <behaviors>
   <serviceBehaviors>
  
    <behavior name="DomainReader.Service.ServiceDomainReaderBehavior">
     <serviceMetadata httpGetEnabled="true" />
     <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
   </serviceBehaviors>
  </behaviors>
 
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></modules>
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory"/>
<remove name="ScriptHandlerFactoryAppServices"/>
<remove name="ScriptResource"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></handlers></system.webServer>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/></compiler></compilers></system.codedom>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/></dependentAssembly></assemblyBinding></runtime></configuration>

#11


返回时候出错有可能是序列化时出问题

#12


实在无能为力

#13


问题已解决,原来是程序中循环引用导致的异常,ADUser对象有一个属性ADGroup集合属性,而ADGroup对象中又存在ADUser集合属性,在此处引发的异常,究其根本还是WCF中不能包含这种用法。因为我在测试这个类库的时候这两个属性是都可以取到值的。

#14


引用 13 楼 liushengpiaoxu 的回复:
问题已解决,原来是程序中循环引用导致的异常,ADUser对象有一个属性ADGroup集合属性,而ADGroup对象中又存在ADUser集合属性,在此处引发的异常,究其根本还是WCF中不能包含这种用法。因为我在测试这个类库的时候这两个属性是都可以取到值的。

我在弄WCF的时候也出现了这个问题。不明白,你的代码里面哪里出现了ADUser和ADGroup啊?