Ich habe Klasse unten, aber nur die SayHello könnte funktionieren. Wusstest du irgendjemanden den Grund?Datenverträge und Rundschreiben in WCF
public class Service1 : IService1
{
public Department GetDepartment()
{
Department d1 = new Department() { DepartmentName = "dep1" };
d1.employees = new List<Employee>() {
new Employee() {
username="user1",
department=d1
},
new Employee() {
username="user2",
department=d1
}
};
return d1;
}
public string SayHello(string username)
{
return "Hello " + username + "!";
}
}
[DataContract]
public class Department
{
[DataMember]
public string DepartmentName { get; set; }
[DataMember]
public List<Employee> employees { get; set; }
}
[DataContract]
public class Employee
{
[DataMember]
public string username { set; get; }
[DataMember]
public Department department { get; set; }
}
Der SayHello konnte funktioniert gut, aber das GetDepartment ist fehlgeschlagen mit Fehlern unter:
* Ein Fehler ist aufgetreten, während die HTTP-Antwort auf http://localhost:8080/ empfängt. Dies könnte daran liegen, dass die Service-Endpunktbindung das HTTP-Protokoll nicht verwendet. Dies kann auch daran liegen, dass ein HTTP-Anforderungskontext vom Server abgebrochen wird (möglicherweise aufgrund des Herunterfahrens des Dienstes). Weitere Informationen finden Sie in den Serverprotokollen. Server-Stack-Trace: bei
System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at IService1.GetDepartment()
at Service1Client.GetDepartment()
Inner Exception:
The underlying connection was closed: An unexpected error occurred on a receive.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
Inner Exception:
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
Inner Exception:
An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)*
mit zu starten, haben Sie debuggen? –
Versuchen Sie, WCF-Ablaufverfolgung einzuschalten, können Sie einige Hinweise auf das Problem geben: http://weblogs.asp.net/seaniannuzzi/wcf-diagnostics-implementation-in-5-easy-steps –
Es wäre auch hilfreich für Sie poste deine WCF-Bindings ... –