【问题标题】:The remote server returned an error: (500) Internal Server Error on server at System.Net.HttpWebRequest.GetResponse()远程服务器返回错误:(500) System.Net.HttpWebRequest.GetResponse() 服务器上的内部服务器错误
【发布时间】:2013-12-05 15:05:57
【问题描述】:

远程服务器返回错误:(500) Internal Server Error 在System.Net.HttpWebRequest.GetResponse()

在本地机器上工作正常,但在服务器上测试应用程序后产生问题

下面是我的代码

foreach (var file in pt1_upload)
                {
                    MemoryStream target = new MemoryStream();
                    file.InputStream.CopyTo(target);
                    byte[] byteArray = target.ToArray();
                    string ServiceUrl = ConfigurationManager.AppSettings["ServiceUrl"].ToString();
                    WebRequest request = WebRequest.Create(ServiceUrl + "image/UploadPhotoForService?tabNo=1");
                    request.Method = "POST";
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.ContentLength = byteArray.Length;
                    Stream dataStream = request.GetRequestStream();
                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();
                    WebResponse response = request.GetResponse();
                    dataStream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(dataStream);
                    string responseFromServer = reader.ReadToEnd();
                    Console.WriteLine(responseFromServer);
                    reader.Close();
                    dataStream.Close();
                    response.Close();
}

接收图像字节数组的我的 MVC3 应用程序代码

[HttpPost]
        [System.Web.Services.WebMethod]
        public string UploadPhotoForService(int tabNo)
        {
            try
            {
                    byte[] buffer = new byte[Request.InputStream.Length];
                    Request.InputStream.Read(buffer, 0, buffer.Length);
                    MemoryStream ms = new MemoryStream(buffer);
                    Image returnImage = Image.FromStream(ms);
                    var fileName = Guid.NewGuid().ToString();

                    var myPath = "~/TempImages/";

                    if (!Directory.Exists(Server.MapPath(myPath)))
                    {
                        DirectoryInfo di = Directory.CreateDirectory(Server.MapPath(myPath));
                    }
                    var physicalPath = Path.Combine(Server.MapPath(myPath), fileName + ".jpeg");
                    returnImage.Save(physicalPath, System.Drawing.Imaging.ImageFormat.Jpeg);

            }
            catch (Exception ex)
            {
                return ex.Message;    
            }
        }

【问题讨论】:

  • 试试Server.MapPath(ServiceUrl + "image/UploadPhotoForService?tabNo=1")
  • 我正在提供服务 URL 中第二个应用程序的完整 URL
  • 调查 500 错误,它会告诉你哪里出了问题。

标签: c# asp.net asp.net-mvc-3 post service


【解决方案1】:

我已经通过将内容类型更改为

解决了这个问题
request.ContentType = "image/jpeg";

【讨论】:

    【解决方案2】:

    您需要使用Server.MapPath()函数将map指定的path对应physical directory上的server

    您需要使用Path.Combine() 函数将strings 组合成path

    试试这个:

    WebRequest request = WebRequest.Create(Path.Combine(Server.MapPath(ServiceUrl)), "image/UploadPhotoForService?tabNo=1"));
    

    【讨论】:

    • Server.MapPath 说虚拟路径无效,因为我正在向另一台服务器请求图像上传 serviceUrl = ="XX.XX.XX.XX:XXXX"