【问题标题】:HttpWebRequest. The remote server returned an error: (500) Internal Server ErrorHttpWeb 请求。远程服务器返回错误:(500) Internal Server Error
【发布时间】:2013-11-18 22:24:46
【问题描述】:

我需要有关 C# 中 HttpWebRequest 的帮助。下面的代码行对于本地 IIS 工作正常,但是当我上传到远程服务器时,它开始给我“远程服务器返回错误:(500)内部服务器错误。”。我尝试了 GET 和 POST 方法的许多变体,但无法弄清楚问题所在。请查看下面的代码,让我知道这有什么问题。

try
{
    string postData = "applicaitonid=abc&deviceid=xyz";
    string uri = System.Configuration.ConfigurationManager.AppSettings.Get("baseUrl") + System.Configuration.ConfigurationManager.AppSettings.Get("ABApiPath") + "ConfirmAppBinding/?" + postData;

    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)WebRequest.Create(uri);
    request.Method = "POST"; // Set type Post
    //request.Method = "GET";
    request.UserAgent = Request.UserAgent.ToString();
    request.ContentType = @"application/json";
    request.MediaType = "application/json";
    request.Accept = "application/json";
    request.KeepAlive = false;
    request.ProtocolVersion = HttpVersion.Version11;
    //byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(postData);
    request.Timeout = 500000;             //Increase timeout for testing

    Stream reqstr = request.GetRequestStream();
    //reqstr.Write(buffer, 0, buffer.Length);
    reqstr.Close();

    // Read Response
    var httpResponse = request.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
        JsonMessage.message = streamReader.ReadToEnd();
        streamReader.Close();
    }
}
catch (WebException e)
{
    JsonMessage.message = e.Message;
    return Json(JsonMessage, JsonRequestBehavior.AllowGet);
}

正如我告诉你的,我使用了默认的 GET 方法,但它并没有解决问题。

【问题讨论】:

标签: c# httpwebrequest internal-server-error


【解决方案1】:

使用此代码进行捕获

catch (WebException e)
{
   string pageContent = new StreamReader(wex.Response.GetResponseStream()).ReadToEnd().ToString();
   return pageContent;
}

它将显示您所面临的确切错误。

【讨论】:

  • 谢谢!这帮助我弄清楚我的控制器上有 [ValidateAntiyForgeryToken] 拒绝了我的错误请求。
【解决方案2】:

您可以使用 try 和 catch 块来查找根本原因。

catch (WebException ex)
{
    string message = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
}

【讨论】:

    【解决方案3】:

    我会在黑暗中刺伤

    可能是您的查询字符串中有拼写错误,并且当在代码中引用该键时,它会返回一个空值异常?

    { String postData = "applicaitonid=abc&deviceid=xyz"; 
    }
    

    应该是

    { String postData = "applicationid=abc&deviceid=xyz";  }
    

    【讨论】:

    • 忽略查询字符串中的拼写错误。它的错字在这里。代码在本地运行良好。但是当我将它发布到远程服务器时,它会给出“远程服务器返回错误:(500)内部服务器错误”。
    • 有很多“变量”,你的uri值呢?远程服务器上是否存在 abapipath 目录?
    • @Wombelite 我确实遇到了同样的问题。我使用的是“userID”而不是userId。谢谢。
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多