VS2010, C #, .NET 4
Я создал 2 приложения: веб-сервис и приложение Windows Forms (оба работают на одном ПК).Вот код:
ВЕБ-ОБСЛУЖИВАНИЕ:
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "message";
}
}
ПРИМЕНЕНИЕ В WINDOWS:
HttpWebRequest req =(HttpWebRequest)WebRequest.Create("http://localhost:20848/Service1.asmx/HelloWorld");
req.Credentials = CredentialCache.DefaultCredentials;
req.Method = "POST";
//Set the content type of the data being posted.
req.ContentType = "application/text";
WebResponse res = req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string txtOutput = sr.ReadToEnd();
Console.WriteLine(sr.ReadToEnd());
ЭТО РАБОТАЕТ ТОЛЬКО В ФОРМЕ.Я получаю ответ от веб-службы, которая содержит сообщение.Теперь я изменяю приложения 2 приложений следующим образом:
ВЕБ-СЕРВИС:
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(string message)
{
return message;
}
}
ПРИЛОЖЕНИЕ ФОРМ WINDOWS:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost:20848/Service1.asmx/HelloWorld");
req.Credentials = CredentialCache.DefaultCredentials;
req.Method = "POST";
string inputData = "sample webservice";
string postData = "message=" + inputData;
byte[] byte1 = System.Text.ASCIIEncoding.ASCII.GetBytes(postData);
req.ContentLength = byte1.Length;
Stream postdataStream = req.GetRequestStream();
//Set the content type of the data being posted.
req.ContentType = "application/text";
postdataStream.Write(byte1, 0, byte1.Length);
WebResponse res = req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string txtOutput = sr.ReadToEnd();
Console.WriteLine(sr.ReadToEnd());
ДАННЫЕ СБОИ ПО ЗАПРОСУ. GetResponse ();«Это говорит о том, что основная связь закрыта».Может кто-нибудь сказать мне, что не так с кодом здесь.Примечание. Я ДОЛЖЕН обращаться к веб-методам только с помощью веб-запросов.Я не хочу добавлять веб-ссылку.