Ошибка ответа от демона: ошибка rpc: code = 2 desc = «Ошибка времени выполнения oci: ошибка формата exec»
В моем случае я получил эту ошибку при попытке установить докер на 32-битный ArchLinux (малиновый пи 2). Вместо этого я использовал HyperioOS , и он стал намного плавнее и намного быстрее устанавливался. Но, в конце концов, большинство образов докеров не совместимы с 32-битными архитектурами, и они описывают это как возможную причину для получения этой ошибки.
Здесь мы запускаем Docker на Raspberry Pi. Таким образом, архитектура процессора здесь ARM, а не x86 / x64 от Intel или AMD. Таким образом, используемые вами приложения на основе Docker должны быть упакованы специально для архитектуры ARM! Приложения на базе Docker, упакованные для x86 / x64, не будут работать и приведут к ошибке
Я нашел решение. Используя IHttpModule, я могу регистрировать запросы от чего угодно (SOAP, JSON, формы и т. Д.). В приведенной ниже реализации я решил регистрировать все запросы .asmx и .ashx. Это заменяет LoggingSoapExtension из вопроса.
public class ServiceLogModule : IHttpModule
{
private HttpApplication _application;
private bool _isWebService;
private int _requestId;
private string _actionUrl;
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
_application = context;
_application.BeginRequest += ContextBeginRequest;
_application.PreRequestHandlerExecute += ContextPreRequestHandlerExecute;
_application.PreSendRequestContent += ContextPreSendRequestContent;
}
#endregion
private void ContextPreRequestHandlerExecute(object sender, EventArgs e)
{
_application.Response.Filter = new CapturedStream(_application.Response.Filter,
_application.Response.ContentEncoding);
}
private void ContextBeginRequest(object sender, EventArgs e)
{
string ext = VirtualPathUtility.GetExtension(_application.Request.FilePath).ToLower();
_isWebService = ext == ".asmx" || ext == ".ashx";
if (_isWebService)
{
ITraceLog traceLog = TraceLogFactory.Create();
_actionUrl = _application.Request.Url.PathAndQuery;
StreamReader reader = new StreamReader(_application.Request.InputStream);
string message = reader.ReadToEnd();
_application.Request.InputStream.Position = 0;
_requestId = traceLog.LogRequest(_actionUrl, message);
}
}
private void ContextPreSendRequestContent(object sender, EventArgs e)
{
if (_isWebService)
{
CapturedStream stream = _application.Response.Filter as CapturedStream;
if (stream != null)
{
ITraceLog traceLog = TraceLogFactory.Create();
traceLog.LogResponse(_actionUrl, stream.StreamContent, _requestId);
}
}
}
}
Я много позаимствовал из Захват HTML, сгенерированного из ASP.NET .
Это может быть потому, что вы запрашиваете результаты Json вместо XML через ваш веб-сервис (dataType: "json"). Итак, атрибут ScriptService активируется, но вы не отправляете сообщения SOAP.
Вы можете изменить dataType на xml и посмотреть, работает ли это.
http://docs.jquery.com/Ajax/jQuery.ajax #options
Другой вариант ведения журнала - это Log4Net. Для вас это могло бы быть намного более универсальным.
Fiddler (в первую очередь для IE, но теперь для firefox) или Firebug (для firefox) - бесценные инструменты для отслеживания ваших клиентских запросов и ответов.