Поэтому я пытаюсь, чтобы приложения Azure Logic просматривали мою электронную почту и затем вызывали веб-службу, которую я настроил на основе определенных критериев.Я успешно развернул и протестировал свой веб-сервис, вызвав его с моего локального компьютера.Однако при тестировании созданной мной лазурной функции, которая вызывает веб-сервис, я получаю только «500 Internal Server Error» без дополнительной информации.
Код для приложения логики выглядит следующим образом:
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("message", "Test Ticket via Run");
string methodName = "CreateTicket";
string soapStr =
@"<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<{0} xmlns=""http://tempuri.org/"">
{1}
</{0}>
</soap:Body>
</soap:Envelope>";
string postValues = "";
foreach (var param in parameters)
{
postValues += string.Format("<{0}>{1}</{0}>", param.Key, param.Value);
}
soapStr = string.Format(soapStr, methodName, postValues);
HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(<HttpsURL>);
webreq.Headers.Add("SOAPAction", @"http://tempuri.org/<ServiceName>/CreateTicket");
webreq.ContentType = "text/xml;charset=\"utf-8\"";
webreq.Accept = "text/xml";
webreq.Method = "POST";
using (Stream stream = webreq.GetRequestStream())
{
using (StreamWriter sWriter = new StreamWriter(stream))
{
sWriter.Write(soapStr);
}
}
try
{
using (StreamReader responseReader = new StreamReader(webreq.GetResponse().GetResponseStream()))
{
string response = responseReader.ReadToEnd();
return (ActionResult)new OkObjectResult("Message Sent Successfully");
}
}
catch (Exception e)
{
Console.WriteLine(e);
return new BadRequestObjectResult(e.InnerException);
}
}
Материал, который я пробовал:
Отключение пользовательских ошибок:
<system.web>
<customErrors mode="Off"/>
</system.web>
Транспортная привязка:
<webHttpBinding>
<binding name="WebConfiguration" maxBufferSize="65536" maxReceivedMessageSize="2000000000" transferMode="Streamed">
<security mode="Transport"/>
</binding>
</webHttpBinding>
Подробные ошибки (чтобы попытаться получить сообщение об исключении 500)
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
Я также пытался связать учетную запись интеграции с сертификатом сервера с ресурсомгруппа на Azure, но это тоже не имеет значения.Трассировка невыполненных запросов включена для веб-службы, на которой он размещен, но журналы не созданы.
По сути, у меня есть вызовы к этому веб-сервису, работающие из моего локального региона, но я не могу заставить приложения логики вызвать его успешно, а также не могу получить какую-либо полезную информацию о том, почему это не удалось.У меня следующие вопросы:
1) Как лучше всего получить более подробное сообщение об ошибке на моем сервере и / или Azure?2) Нужно ли включать специальные разрешения в Azure для взаимодействия с внешними API?3) Это правильный способ заставить приложения логики вызывать конечную точку?
Спасибо за любую помощь!Дайте мне знать, если потребуется дополнительная информация!
~ Джош