如何将复杂类型对象从一个域传递到子域

时间:2012-07-14 11:41:44

标签: asp.net web-services xmlhttprequest dns subdomain

我需要将预留类型对象从一个主域传递到子域,其中是已安装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方法

没有出错

1 个答案:

答案 0 :(得分:1)

如果您打算使用会话,请确保您已在网络服务中启用会话:

[WebMethod(EnableSession = true)]
public List<Reservation> getReservation()
{
    ...
}

显然,现在您已启用会话,但这并不意味着HttpContext.Current.Session["reservation"]会为您提供除null以外的任何内容。您必须先将某些内容存储到会话中。这应该在同一个Web服务中完成,而不是从外部完成。您无法在ASP.NET应用程序之间共享会话。