У меня есть вопрос об использовании WCF и Channel Factory.
На хосте:
[ServiceContract]
public interface IGetMessage
{
[OperationContract]
string ShowMessage(Sample p, string Username, string Password);
}
[DataContract]
public class Sample
{
[DataMember]
public string Name { get; set; }
}
public string ShowMessage(Sample p, string Username, string Password)
{
return p.Name.ToString() + " - " + "Correct"; //Error line
}
На клиенте:
[ServiceContract()]
public interface IGetMessage
{
[OperationContract()]
string ShowMessage(Sample p, string Username, string Password);
}
[DataContract()]
public class Sample
{
[DataMember]
public string Name { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
Sample p1 = new Sample();
p1.Name = "ALEX";
BasicHttpBinding myBinding = new BasicHttpBinding();
EndpointAddress myEndpoint = new EndpointAddress("http://MYURL/GetMessage.svc");
using (var myChannelFactory = new ChannelFactory<IGetMessage>(myBinding, myEndpoint))
{
IGetMessage client = null;
try
{
client = myChannelFactory.CreateChannel();
MessageBox.Show(client.ShowMessage(p1, "abc","123"));
((ICommunicationObject)client).Close();
myChannelFactory.Close();
}
catch
{
(client as ICommunicationObject)?.Abort();
}
}
}
Если я добавлю на клиенте какСервисная справка, работает отлично.Я могу получить сообщение «ALEX - Correct».
Когда я тестирую на WcfTestClient.exe, он работает отлично.
Но у меня проблема при использовании на Winform с вышеуказанными кодами.Когда я проверяю WcfServer Trace Log и Message Log;
System.NullReferenceException - Ссылка на объект не установлена на экземпляр объекта.Номер строки: 22 * 1016 *
Номер строки 22: p.Name.ToString () в файле GetMessage.cvs.cs хоста.
Я думаю, что тамнет проблем на хосте.Проблема на стороне клиента.
Я хотел бы спросить вас, как я допустил ошибку на стороне клиента?
С уважением.