Я пытаюсь запустить программу .NET в Ubuntu, используя моно.
Программа подключается к API удаленного сервера и получает в ответ строку XML. Вот упрощенная версия функции, отвечающей за эту задачу.
using System.Net;
static string GetProducts(string clientID, string apiKey, string url)
{
HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
req.Credentials = new NetworkCredential(clientID, apiKey);
req.ContentType = "application/x-www-form-urlencoded";
string result = string.Empty;
using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
result = reader.ReadToEnd();
}
return result;
}
Он отлично работает на моей машине с Windows 8.1. Но моя цель — запустить его на Ubuntu VPS. Я использую моно для достижения этого. Программа запускается, но останавливается с исключением, когда пытается разобрать загруженную строку XML.
[ERROR] FATAL UNHANDLED EXCEPTION: System.Xml.XmlException: Document element did not appear. Line 1, position 1.
Немного покопавшись, я обнаружил, что программа на самом деле не получает ответ в формате XML, а вместо этого выдает пустую строку. Что странно, так как ошибок подключения не возникает.
У меня был некоторый предыдущий опыт работы с моно и Ubuntu, но я никогда раньше не сталкивался с такой проблемой.
Может ли это быть как-то связано с сервером Ubuntu или моно? Или в самом коде?
Есть мысли по этому поводу?
Content-Type: application/x-www-form-urlencoded Authorization: Basic MjY2MjQyOmFmNDhlZjUwZDFiM2Y5MWRiZmE5ZTAwYTNjM2ZhNjg3
в UbuntuContent-Type: application/x-www-form-urlencoded Connection: keep-alive
Похоже, в Ubuntu отсутствует строка авторизации. Но я нигде не устанавливаю его в Windows. Может ли это иметь какое-то значение? - person Aceonace   schedule 08.04.2014