Служба вызова приложения asp.net говорит, что она не инициализирована? - PullRequest
0 голосов
/ 18 января 2012

Итак, этот код запускается в приложении asp.net в Linux. Код вызывает одну из моих услуг. (WCF не работает на моно в настоящее время, поэтому я использую asmx). Этот код работает как задумано при запуске из Windows (во время отладки). Как только я внедряюсь в Linux, он перестает работать. Я определенно сбит с толку. Я тщательно протестировал сервис, и сервис в порядке.

Вот код, выдающий ошибку: (NewVisitor - функция void, принимающая 3 строки)

//This does not work.
try
 {
     var client = new Service1SoapClient();
     var results = client.NewVisitor(Request.UserHostAddress, Request.UrlReferrer == null ? String.Empty : Request.UrlReferrer.ToString(), Request.UserAgent);
     Logger.Debug("Result of client: " + results);
 }

Вот сгенерированная ошибка: Ссылка на объект не установлена ​​для экземпляра объекта

Вот код, который отлично работает:

 //This works (from the service)
 [WebMethod(CacheDuration = _cacheTime, Description = "Returns a List of Dates", MessageName = "GetDates")]
 public List<MySqlDateTime> GetDates()
 {
     return db.GetDates();
 }

 //Here is the code for the method above
 var client = new Service1Soap12Client();
 var dbDates = client.GetDates();

Я бы хотел выяснить, почему он говорит, что объект не установлен.

Использованные методы:

  1. новый клиент мыла.
  2. новый мыльный клиент с указанием адреса привязки и конечной точки
  3. Использовал фабрику каналов для создания и открытия канала.

Если понадобится больше информации, я могу дать больше. У меня нет идей.

Ответы [ 2 ]

0 голосов
/ 24 января 2012

Похоже, ошибка в моно.Вы должны подать ошибку с воспроизводимым контрольным примером, чтобы его можно было исправить (и, возможно, найти обходной путь, который вы можете использовать).

0 голосов
/ 18 января 2012

К сожалению, у меня нет Linux для его тестирования, но я бы посоветовал вам поместить переменную client в выражение using ():

using(var client = new Service1SoapClient())
{
     var results = client.NewVisitor(Request.UserHostAddress, Request.UrlReferrer == null ? 
                       String.Empty : Request.UrlReferrer.ToString(), Request.UserAgent);
     Logger.Debug("Result of client: " + results);
}

Надеюсь, это поможет.

RC.

...