Удаленный сервер вернул ошибку: (500) внутренняя ошибка сервера. - Вызов веб-службы SSIS
У меня есть этот метод в задаче сценария SSIS, который вызывает веб-службы, но в ответ я получаю удаленный сервер, возвращающий ошибку: (500) Внутренняя ошибка сервера.
В трассировке стека больше ничего нет. Когда я использую один и тот же XML-запрос в пользовательском интерфейсе Soap, я получаю действительный ответ. В мыло нельзя использовать обычную проверку подлинности.
Может ли кто-нибудь помочь мне здесь? В чем тут может быть проблема?
public void GetWebServiceData(DataRow row) { FileInfo MyFileinfo = new FileInfo(configuration_file_location + "\\Test1\\Test.xml"); using (StreamReader myReader = MyFileinfo.OpenText()) { myXmlMessage = myReader.ReadToEnd(); } try { myXmlMessage = AddContractToXml(policyNumber, myXmlMessage); int timeout = 1800000; HttpWebRequest req = WebRequest.Create(new Uri(web_service_url)) as HttpWebRequest; req.Method = "POST"; req.ContentType = "text/xml;charset=UTF-8"; byte[] formData = UTF8Encoding.UTF8.GetBytes(myXmlMessage.ToString()); req.ContentLength = formData.Length; req.Timeout = timeout; ICredentials credentials = new NetworkCredential(user_name, user_password); WebProxy myProxy = new WebProxy(proxy_server, proxy_port); req.Proxy = myProxy; req.Proxy.Credentials = CredentialCache.DefaultCredentials; req.Credentials = credentials; using (Stream post = req.GetRequestStream()) { post.Write(formData, 0, formData.Length); } using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse) { using (StreamReader reader = new StreamReader(resp.GetResponseStream())) { XmlDocument myXmlDoc = new XmlDocument(); myXmlDoc.Load(reader); XslCompiledTransform myXslTrans = new XslCompiledTransform(); /* loading XSLT */ myXslTrans.Load(configuration_file_location + "\\Test1\\TestMonitoring.xslt"); /* creating Output Stream */ XmlTextWriter myWriter = new XmlTextWriter(web_service_output_transform_location + policyNumber + ".xml", null); /* XML transformation */ myXslTrans.Transform(myXmlDoc, null, myWriter); myWriter.Close(); } } } catch (WebException webExcp) { string exMessage = webExcp.Message; if (webExcp.Response != null) { using (StreamReader responseReader = new StreamReader(webExcp.Response.GetResponseStream())) { exMessage = responseReader.ReadToEnd(); if (!Directory.Exists(log_location + DateTime.Now.ToString("ddMMyyyy"))) Directory.CreateDirectory(log_location + DateTime.Now.ToString("ddMMyyyy")); FileStream file = new FileStream(log_location + "//" + DateTime.Now.ToString("ddMMyyyy") + "//" + policyNumber + ".xml", FileMode.OpenOrCreate, FileAccess.Write); StreamWriter writer = new StreamWriter(file); writer.Write(exMessage); writer.Close(); file.Close(); } } Dts.TaskResult = (int)ScriptResults.Failure; return; } catch (Exception e) { Dts.TaskResult = (int)ScriptResults.Failure; return; } finally { } }
Что я уже пробовал:
Попробовал в Soap UI и его работу.
F-ES Sitecore
Вам нужно будет использовать такой инструмент, как Fiddler, или какой-то другой сетевой сканер, чтобы посмотреть на http-вызов. Вероятно, в ответе есть более подробное сообщение об ошибке, которое может вам помочь, вы также можете сравнить рабочий вызов с нерабочим вызовом, чтобы увидеть, чем они отличаются.
GKP1992
Попробуйте использовать XML, генерируемый код для вызова службы от мыла пользовательского интерфейса. Возможно, ваш код не создает нужный XML-код.
Member 13789919
Я проверил это, его производство правильное. Проверил тот же XML в soap, и он работает нормально.
Afzaal Ahmad Zeeshan
Проблема находится на стороне сервера, есть ли у вас доступ к коду на стороне сервера?