비트 ... 내가 동일한 데이터 층 LINQ (-으로 액세스 웹 사이트 및 여러 콘솔 응용 프로그램을나는 기본 연결이 폐쇄 오류 내 질문에 배경
이었다받을 - SQL)를 사용하여 데이터를 설정/가져옵니다. 콘솔 앱은 네트워크를 통해 실행되며 WCF 서비스를 통해 중앙 데이터베이스를 업데이트합니다. 웹 사이트는 앱 데이터로 캡처 한 데이터를 사용자에게 표시하는 데 사용됩니다.
간단한 유형을 반환하고 사용자 지정 개체의 목록을 반환 할 때 WCF 서비스가 작동하지만 IEnumerable/내에서 아무 것도 반환하지 않을 때마다 내 서비스가 '기본 연결이 닫혀있는 오류'로 처리됩니다. IQueryable.
IEnumerables/IQueryables를 WCF 서비스를 통해 반환 할 수 있다고 생각 했습니까? 가능합니까, 아니면 서비스를 잘못 구성 했습니까? 나는 wsHttpBinding 대신 basicHttpBinding을 사용하고 있지만 다른 유형을 사용하는 것이 가장 좋은 상황에서는 여전히 100 %가 아닙니다.
내 셋업은 다음과 같이이다 :
public class CageService : ICageRepository
{
public IEnumerable<Cage> GetAll()
{
var dc = new DataContext();
return dc .GetAll();
}
}
[ServiceContract]
public interface ICageRepository : IRepository<Cage>
{
[OperationContract]
IEnumerable<Cage> GetAll();
}
서비스 구성 :
<system.serviceModel>
<services>
<!-- Note: the service name must match the configuration name for the service implementation. -->
<service name="CageService" behaviorConfiguration="CageServiceTypeBehaviors" >
<host>
<baseAddresses>
<add baseAddress = "http://localhost/UHFWebsite/" />
</baseAddresses>
</host>
<!-- Add the following endpoint. -->
<!-- Note: your service must have an http base address to add this endpoint. -->
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
<endpoint address ="" binding="basicHttpBinding" contract="Wavin.CageTracking.DataLayer.Interfaces.ICageRepository" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CageServiceTypeBehaviors" >
<!-- Add the following element to your service behavior configuration. -->
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
클라이언트 설정 :
void method()
{
var client = new CageRepositoryClient();
CageListView.DataSource = client.GetAll();;
CageListView.DataBind();
}
,536 :
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ICageRepository1" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:2000/UHFServices/CageService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICageRepository1"
contract="CageRepositoryClient.ICageRepository" name="BasicHttpBinding_ICageRepository1" />
</client>
</system.serviceModel>
호출하는 코드의 모습
'케이지 (Cage) '는 이미 알려진 유형 일 수 있습니다. –
정확히 내가 필요로하는 것. .. 고마워! –
관심 밖의 .. 왜 서비스가 잘 개체 목록을 반환하지만 IEnumerbale 개체의 목록을 먼저 알려진 형식으로 개체를 선언하지 않고 반환 할 것이라고 설명 할 수 있습니까? –