我需要将预留类型对象从一个主域传递到子域,其中是已安装ssl的页面。因此必须在那里发送所有值并在那里消费/
我厌倦了使用以下方法创建Web服务
[WebMethod]
public List<Reservation> getReservation()
{
if (HttpContext.Current.Session["reservation"] != null)
{
return (List<Reservation>)HttpContext.Current.Session["reservation"];
}
else
{
List<Reservation> objres = new List<Reservation>();
return objres;
}
}
所以我可以在子域名页面中使用该Web服务
以下代码写在启用ssl的页面
上 string FullUrl = "http://localhost/goldlinetravel/webservice.asmx/getReservation";
HttpWebRequest request = WebRequest.Create(FullUrl.ToString()) as HttpWebRequest;
request.ContentType = "text/xml; charset=UTF-8";
request.Accept = "application / xml";
request.Method = "POST";
request.ContentLength = 0;
DataSet dsReservation = new DataSet();
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
response.GetResponseStream();
dsReservation.ReadXml(response.GetResponseStream());
}
抛出错误500服务器错误。
Web服务中还有另一种方法
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
当我使用以下代码使用此Web服务时,没有错误
string FullUrl = "http://localhost/goldlinetravel/webservice.asmx/HelloWorld";
HttpWebRequest request = WebRequest.Create(FullUrl.ToString()) as HttpWebRequest;
request.ContentType = "application/x-www-form-urlencoded";
request.Accept = "application / xml";
request.Method = "POST";
request.ContentLength = 0;
DataSet dsReservation = new DataSet();
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
response.GetResponseStream();
dsReservation.ReadXml(response.GetResponseStream());
}
我的getReservation方法
没有出错答案 0 :(得分:1)
如果您打算使用会话,请确保您已在网络服务中启用会话:
[WebMethod(EnableSession = true)]
public List<Reservation> getReservation()
{
...
}
显然,现在您已启用会话,但这并不意味着HttpContext.Current.Session["reservation"]
会为您提供除null
以外的任何内容。您必须先将某些内容存储到会话中。这应该在同一个Web服务中完成,而不是从外部完成。您无法在ASP.NET应用程序之间共享会话。