【发布时间】:2013-02-04 13:31:54
【问题描述】:
我正在使用 C# 将 XML 文件发布到 Web 服务,但是当我请求响应“服务器错误 - 500 - 您不允许访问系统”时出现错误。任何帮助将不胜感激。
protected void Page_Load(object sender, EventArgs e)
{
WebRequest req = null;
WebResponse rsp = null;
try
{
string fileName = Server.MapPath("~\\test.xml");
string uri = "http://212.170.239.71/appservices/http/FrontendService";
req = WebRequest.Create(uri);
//req.Proxy = WebProxy.GetDefaultProxy(); // Enable if using proxy
req.Credentials = new NetworkCredential("myusername", "mypassword");
req.Method = "POST"; // Post method
req.ContentType = "text/xml"; // content type
// Wrap the request stream with a text-based writer
StreamWriter writer = new StreamWriter(req.GetRequestStream());
// Write the XML text into the stream
writer.WriteLine(this.GetTextFromXMLFile(fileName));
writer.Close();
// Send the data to the webserver
rsp = req.GetResponse(); //I am getting error over here
StreamReader sr = new StreamReader(rsp.GetResponseStream());
string result = sr.ReadToEnd();
sr.Close();
Response.Write(result);
}
catch (WebException webEx)
{
Response.Write(webEx.Message.ToString());
Response.Write(webEx.StackTrace.ToString());
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
Response.Write(ex.StackTrace.ToString());
}
finally
{
if (req != null) req.GetRequestStream().Close();
if (rsp != null) rsp.GetResponseStream().Close();
}
}
//Function to read xml data from local system
/// <summary>
/// Read XML data from file
/// </summary>
/// <param name="file"></param>
/// <returns>returns file content in XML string format</returns>
private string GetTextFromXMLFile(string file)
{
StreamReader reader = new StreamReader(file);
string ret = reader.ReadToEnd();
reader.Close();
return ret;
}
【问题讨论】:
-
如果是 Web 服务,您可以使用 WSDL 生成所有客户端代码。使与它的接口变得更加容易
-
能否在解决方案资源管理器中右键单击项目并单击添加服务引用,放入服务的端点,单击执行,选择命名空间,然后单击确定?
-
它是 SOAP Web 服务吗?如果是这样,那么您需要使用“添加服务引用”。
-
一些提示:您的 WebResponse、StreamReader 和 StreamWriter 都需要在
using块中。另外,使用ex.ToString()而不是显示Message和StackTrace。您将丢失任何InnerException实例。
标签: c# asp.net web-services