asp.net中的多行文本框呈现问题

时间:2012-03-15 13:00:34

标签: asp.net wcf textbox

我为wcf服务开发了一个客户端页面。基本上我的页面有一个按钮和两个文本框,一个用于从xml文件加载请求xml,另一个用于显示响应xml。 问题是,在从wcf服务获得任何错误后,我的请求xml文本框忽略了所有xml节点,它只显示带有偶数空格的节点值。

这是在一台机器上工作,它不能在另一台机器上工作。 两台机器是windows xp os,即7。

<TextBox ID="requesttextbox" runat="server" TextMode="MultiLine" Width="470px"
                Height="300px" Wrap="false/>

按钮点击类似这样的代码

System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.XmlResolver = null;
xmlDoc.LoadXml(requesttextbox.Text);
HttpWebRequest objHttpWebRequest = null;
HttpWebResponse objHttpWebResponse = null;

string strFinalRequestXML = xmlDoc.OuterXml;

objHttpWebRequest = (HttpWebRequest)WebRequest.Create("RequestURL");
objHttpWebRequest.Method = "POST";
objHttpWebRequest.Accept = "xml";
objHttpWebRequest.ContentType = "application/xml; charset=utf-8";
objHttpWebRequest.Timeout = 300000;
objHttpWebRequest.ContentLength = strFinalRequestXML.Length;
System.IO.StreamWriter sw = new System.IO.StreamWriter  (objHttpWebRequest.GetRequestStream());
sw.Write(strFinalRequestXML);
sw.Close();

try
{
    objHttpWebResponse = (HttpWebResponse)objHttpWebRequest.GetResponse();
    Stream streamResponseText = objHttpWebResponse.GetResponseStream();
    StreamReader srFinalResponseText = new StreamReader(streamResponseText, Encoding.UTF8);
    txtResponse.Text = string.Empty;

    // formattin xml string to as xml nodes to display in textbox
    System.Xml.Linq.XElement element = System.Xml.Linq.XElement.Parse(srFinalResponseText.ReadToEnd());
    txtResponse.Text = element.ToString();

    strStatusCode = objHttpWebResponse.StatusCode.GetHashCode().ToString();

}
catch (WebException objWebException)
{
}

例如:

请求xml&lt; node&gt; test&lt; / node&gt; &LT;节点1&GT;测试;&LT; /节点1&GT;在请求xml文本框内。 从wcf显示错误后显示为“测试测试”。

我对这个问题一无所知。

1 个答案:

答案 0 :(得分:1)

如果您确实在使用WCF,则不必使用HttpWebRequest和HttpWebResponse手动调用URL,也不必手动解析XML。您应该将服务添加到服务引用,请参阅:

http://msdn.microsoft.com/en-us/library/bb628652.aspx

如果它不是WCF,而是常规SOAP Web服务,您仍然可以将其添加为Web引用,请参阅:

http://msdn.microsoft.com/en-us/library/bb628649.aspx

然后你可以编写一些更容易的代码:

using (var client = new MyService.MyServiceClient())
{
    string foo;
    foo = client.MyMethod();
}

至于文本显示,你的catch处理程序中没有任何内容,所以我不确定文本框在哪里可以获得任何类型的值。您必须将其设置在您提供的代码段之外的某个位置。