2012-12-28 65 views
1

我使用下面的發送XML文件服務器代碼,如果我上傳adduser.xml(這是使用了添加用戶),我得到成功響應獲取錯誤響應,但對於deleteuser.xml(這是用戶的刪除用戶)我得到使用web請求

The remote server returned an error: (400)
Bad Request. at System.Net.HttpWebRequest.GetResponse()
at DeleteUser.Page_Load(Object sender, EventArgs e)

我已經試過的方法類型PUTGETPOSTDELETE,但得到了同樣的錯誤。

你能plz幫助我什麼,我做錯了什麼?

public partial class DeleteUser : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

      WebRequest req = null; 
      WebResponse rsp = null; 
      try 
      { 
       string fileName = Server.MapPath("~/deleteuser.xml"); 
       string uri = "http://test.com/AuctionUsers/delete"; 
       req = WebRequest.Create(uri); 
       req.Proxy = WebProxy.GetDefaultProxy(); // Enable if using proxy 
       req.Method = "POST"; 

       req.ContentType = "application/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(); 
      } 
     } 

     private string GetTextFromXMLFile(string file) 
     { 
      StreamReader reader = new StreamReader(file); 
      string ret = reader.ReadToEnd(); 
      reader.Close(); 
      return ret; 
     } 
    } 

在此先感謝您。

+0

的服務器似乎在期待一個不同的請求。這可能意味着你的deleteuser.xml出現故障,或者你需要使用不同的方法,提供一定的HTTP標頭或做其他事。我們需要更多地瞭解服務器以幫助您。 – Wutz

回答

1

可以有若干不同的原因,其中之一是在該方法本身的誤差。我首先建議turn tracing on服務器端,如果你有機會;它可以幫助您查明錯誤。引用該鏈接時,應如下所示:

<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel" 
        switchValue="Information, ActivityTracing" 
        propagateActivity="true"> 
      <listeners> 
       <add name="traceListener" 
        type="System.Diagnostics.XmlWriterTraceListener" 
        initializeData= "c:\log\Traces.svclog" /> 
      </listeners> 
     </source> 
     </sources> 
    </system.diagnostics> 
</configuration> 

然後可以從.NET跟蹤查看器中查看它生成的文件。

編輯:有一個類似的帖子在這裏,這可能會有所幫助:

Why The remote server returned an error: (400) Bad Request.?