나는 WCF로 시작하고 있습니다. 문제없이 작동하는 두 가지 콘솔 앱 (서버 및 클라이언트)을 만들었지 만 양식으로 이동 한 이후 모든 종류의 문제가 발생했습니다. 나는 여기저기서 다른 곳에서 그물을 보았고, 나는 내 문제로 나를 도울 수있는 것을 찾을 수 없을 것 같다. 솔직히이 문제를 이해할 수는 없지만 데이터 유형 (다른 네임 스페이스 아래에 있음)과 관련이있을 수 있다고 생각합니다. (필자는 ServiceHost를를 열고있어 위치로 점) 내가 잡있어 오류가 여기에channeldispatcher가 ichannellistener를 열 수 없습니다.
[ServiceContract]
public interface IModelData
{
[OperationContract]
ArrayList GetData();
}
[ServiceBehavior(UseSynchronizationContext = false)]
public class ModelDataClient
{
ChannelFactory<IModelData> HttpFactory;
IModelData HttpProxy;
public ModelDataClient()
{
HttpFactory = new ChannelFactory<IModelData>(
new BasicHttpBinding(),
new EndpointAddress("http://localhost:8000/ModelData"));
HttpProxy = HttpFactory.CreateChannel();
}
public ArrayList GetData()
{
return HttpProxy.GetData();
}
}
것 :
public partial class Form1 : Form
{
ModelDataServer Server;
public ScraperForm()
{
InitializeComponent();
Server = new ModelDataServer(); // Opened Here
Server.Scraper = this;
}
}
[ServiceContract]
public interface IModelData
{
[OperationContract]
ArrayList GetData();
}
[ServiceBehavior(UseSynchronizationContext=false)]
public class ModelDataServer : IModelData
{
ServiceHost Host;
public DataModel Model { private get; set; }
public ModelDataServer()
{
Host = new ServiceHost(typeof (ModelDataServer),
new Uri[]
{
new Uri("http://localhost:8000")
});
Host.AddServiceEndpoint(typeof(IModelData),
new BasicHttpBinding(),
"ModelData");
Host.Open(); // Error Points Here!!!
}
public ArrayList GetData()
{
return Model.GetData();
}
public void CloseServer()
{
Host.Close();
}
}
가 여기 내 클라이언트 코드입니다 :
여기 내 서버 코드입니다
The ChannelDispatcher at 'http://localhost:8000/ModelData' with contract(s) '"IModelData"' is unable to open its IChannelListener.
추신 대리인이 튜토리얼에서 수행 한 작업 이외의 작업을 수행하는 데 어려움을 겪고 있습니다. 누구든지 내 양식 클래스를 다른 클래스에 전달하는 대신 위임자를 사용하는 더 나은 방법을 제안 할 수 있다면 좋습니다.