1

XMLファイルをサーバーに送信するために以下のコードを使用しています。アップロードするとadduser.xml(これはユーザーの追加に使用されます)、成功の応答が得られますが、deleteuser.xml(これはユーザーを削除するためのユーザーです)取得しています

リモート サーバーがエラーを返しました: (400)
不正な要求。System.Net.HttpWebRequest.GetResponse()
で DeleteUser.Page_Load(オブジェクト送信者、EventArgs e) で

メソッド タイプPUTGETPOSTおよびを試しDELETEましたが、同じエラーが発生しました。

私が間違っていることを教えてください。

 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;
        }
    }

前もって感謝します。

4

1 に答える 1

1

いくつかの異なる理由が考えられますが、その 1 つはメソッド自体のエラーです。アクセスできる場合は、最初にサーバー側でトレースを有効にすることをお勧めします。エラーを特定するのに役立つ場合があります。リンクを引用すると、次のようになります。

<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 トレース ビューア内から表示できます。

編集:ここに同様の投稿があり、役立つ場合があります:

リモートサーバーがエラーを返した理由: (400) Bad Request.?

于 2012-12-28T16:29:38.617 に答える