Невозможно запустить веб-сайт с помощью KestrelHttpServer (ошибка: ссылка на объект не указывает на экземпляр объекта)

Я установил mono 3.10.0 из исходного кода на свою виртуальную машину Linux (Centos 7)

Я установил KVM, используя ссылку, указанную в ASP.NET домашнем каталоге Github.

curl -sSL https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh  

а kpm restore - рабочий файл и восстановление всех пакетов

но я не могу запустить k kestrel в примерах HelloMvc из Asp.Net Home Github
Я даю ошибка

System.NullReferenceException: Object reference not set to an instance of an object
  at Microsoft.AspNet.Server.Kestrel.Networking.Libuv.loop_size () [0x00000] in <filename unknown>:0 
  at Microsoft.AspNet.Server.Kestrel.Networking.UvLoopHandle.Init (Microsoft.AspNet.Server.Kestrel.Networking.Libuv uv) [0x00000] in <filename unknown>:0 
  at Microsoft.AspNet.Server.Kestrel.KestrelThread.ThreadStart (System.Object parameter) [0x00000] in <filename unknown>:0 

Я также пытался isntall libuv из исходного кода, но безуспешно.

Редактировать

Этапы установки libuv:

wget http://dist.libuv.org/dist/v1.0.0-rc1/libuv-v1.0.0-rc2.tar.gz
tar -xvf libuv-v1.0.0-rc2.tar.gz
cd libuv-v1.0.0-rc2/
./gyp_uv.py -f make -Duv_library=shared_library
make -C out
sudo cp out/Debug/lib.target/libuv.so /usr/lib/libuv.so.1.0.0-rc2
sudo ln -s libuv.so.1.0.0-rc2 /usr/lib/libuv.so.1

Исключение после повторной установки Libuv

System.ArgumentException: An element with the same key already exists in the dictionary.
  at System.Collections.Generic.Dictionary`2[TKey,TValue].Add (System.Collections.Generic.TKey key, System.Collections.Generic.TValue value) [0x00000] in <filename unknown>:0 
  at System.Linq.Enumerable.ToDictionary[DictionaryEntry,String,String] (IEnumerable`1 source, System.Func`2 keySelector, System.Func`2 elementSelector, IEqualityComparer`1 comparer) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.ConfigurationModel.EnvironmentVariablesConfigurationSource.Load (IDictionary envVariables) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.ConfigurationModel.EnvironmentVariablesConfigurationSource.Load () [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.ConfigurationModel.Configuration.Add (IConfigurationSource configurationSource) [0x00000] in <filename unknown>:0 
  at Microsoft.Framework.ConfigurationModel.ConfigurationExtensions.AddEnvironmentVariables (IConfigurationSourceContainer configuration) [0x00000] in <filename unknown>:0 
  at Microsoft.AspNet.Hosting.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 
  at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
  at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0 

person Ankesh    schedule 26.12.2014    source источник
comment
Это определенно ошибка libuv. Можете ли вы перечислить шаги, которые вы предприняли для локальной компиляции и символической ссылки на libuv?   -  person Suhas Joshi    schedule 26.12.2014


Ответы (3)


Взгляните на http://olivierlefebvre.tumblr.com/post/101523386694/asp-vnext-alpa4-on-ubuntu

Я исправил так.

Используемый шаг

git clone https://github.com/joyent/libuv.git
cd libuv
sh autogen.sh
./configure
make
make check
sudo make install

Окончательно, добавив символическую ссылку в библиотеку

ln /usr/local/lib/libuv.so -sf ~/.kpm/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-alpha4/native/darwin/universal/libuv.dylib 
person agua from mars    schedule 28.12.2014
comment
Я попробовал ваш метод для Libuv, и сообщение об исключении не изменилось... См. вопрос для получения обновленной информации. - person Ankesh; 29.12.2014
comment
Исключение, которое у вас есть после повторной установки libuv, возникает из-за того, что у вас есть дублон в вашей переменной среды, перечислите ваши env vars и удалите дублон. Это не чувствительно к регистру - person agua from mars; 29.12.2014
comment
не могли бы вы уточнить doublon... Означает ли это переменные среды в CAPS и SMALL как... - person Ankesh; 29.12.2014
comment
да, это не чувствительно к регистру, поэтому, если у вас есть имя переменной для примера HTTP_PROXY и http_proxy, оно считается одной и той же переменной. взгляните на исходный код на github - person agua from mars; 29.12.2014

Взгляните на http://carolynvanslyck.com/blog/2014/09/dotnet-vnext-impressions/ раздел о пустельге.

wget http://dist.libuv.org/dist/v1.0.0-rc2/libuv-v1.0.0-rc2.tar.gz
tar -xvf libuv-v1.0.0-rc2.tar.gz
cd libuv-v1.0.0-rc2/
./gyp_uv.py -f make -Duv_library=shared_library
make -C out
sudo cp out/Debug/lib.target/libuv.so /usr/lib/libuv.so.1.0.0-rc2
sudo ln -s libuv.so.1.0.0-rc2 /usr/lib/libuv.so.1

Это сработало для меня

person Evert    schedule 27.12.2014
comment
Я попробовал ваш метод для Libuv, и сообщение об исключении не изменилось... См. вопрос для получения обновленной информации. - person Ankesh; 29.12.2014

Вы получили исключение, потому что у вас есть две переменные с одинаковым именем, но в другом регистре. Сбросить все переменные среды перед запуском:

printenv > env.dump

найдите повторяющиеся переменные и перед запуском сбросьте одну из них (сохраните исходное значение перед тем, как восстановить его после)

Вот скрипт init.d с примером

Просто сохраните и отключите переменную:

TMP_SAVE_runlevel_VAR=$runlevel
unset runlevel

И восстановить его:

export runlevel=$TMP_SAVE_runlevel_VAR
person druss    schedule 12.06.2015