Orchard 1.8 Получение ошибки 404 Not Found — развертывание через Web Matrix

Я создал сайт сада (версия 1.8)

Он был создан через WebMatrix.

Локально все работает отлично.

Когда я загружаю его на свой сервер (веб-развертывание также через WebMatrix), я получаю следующее сообщение об ошибке:

Server Error in '/' Application.

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /

Журналы ошибок сада:

2014-05-13 08:22:07,827 [23] Orchard.Environment.DefaultOrchardHost - (null) - A tenant could not be started: Default
NHibernate.HibernateException: Could not create the driver from Orchard.Data.Providers.SqlCeDataServicesProvider+OrchardSqlServerCeDriver, Orchard.Framework, Version=1.8.0.0, Culture=neutral, PublicKeyToken=null. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
   at System.Data.SqlServerCe.UnmanagedLibraryHelper..ctor(String fileName)
   at System.Data.SqlServerCe.NativeMethodsHelper..ctor(String modulePath)
   at System.Data.SqlServerCe.NativeMethods.LoadValidLibrary(String modulePath)
   at System.Data.SqlServerCe.NativeMethods.LoadNativeBinariesFromPrivateFolder(String privateInstall)
   at System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
   at System.Data.SqlServerCe.SqlCeCommand..ctor()
   --- End of inner exception stack trace ---
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Bytecode\ActivatorObjectsFactory.cs:line 9
   at NHibernate.Driver.ReflectionDriveConnectionCommandProvider.CreateCommand() in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Driver\ReflectionDriveConnectionCommandProvider.cs:line 35
   at NHibernate.Driver.ReflectionBasedDriver.CreateCommand() in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Driver\ReflectionBasedDriver.cs:line 65
   at NHibernate.Driver.SqlServerCeDriver.Configure(IDictionary`2 settings) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Driver\SqlServerCeDriver.cs:line 35
   at Orchard.Data.Providers.SqlCeDataServicesProvider.OrchardSqlServerCeDriver.Configure(IDictionary`2 settings) in c:\Orchard\src\Orchard\Data\Providers\SqlCeDataServicesProvider.cs:line 78
   at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Connection\ConnectionProvider.cs:line 109
   --- End of inner exception stack trace ---
   at NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Connection\ConnectionProvider.cs:line 113
   at NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Connection\ConnectionProvider.cs:line 64
   at NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Connection\ConnectionProviderFactory.cs:line 50
   at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Cfg\SettingsFactory.cs:line 83
   at NHibernate.Cfg.Configuration.BuildSettings() in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 1733
   at NHibernate.Cfg.Configuration.BuildSessionFactory() in c:\Users\sebros\Documents\My Projects\nhibernate-core\src\NHibernate\Cfg\Configuration.cs:line 1264
   at Orchard.Data.SessionFactoryHolder.BuildSessionFactory() in c:\Orchard\src\Orchard\Data\SessionFactoryHolder.cs:line 90
   at Orchard.Data.SessionFactoryHolder.GetSessionFactory() in c:\Orchard\src\Orchard\Data\SessionFactoryHolder.cs:line 68
   at Orchard.Data.SessionLocator.EnsureSession() in c:\Orchard\src\Orchard\Data\SessionLocator.cs:line 117
   at Orchard.Data.SessionLocator.Demand() in c:\Orchard\src\Orchard\Data\SessionLocator.cs:line 42
   at Orchard.Data.SessionLocator.For(Type entityType) in c:\Orchard\src\Orchard\Data\SessionLocator.cs:line 36
   at Orchard.Data.Repository`1.get_Session() in c:\Orchard\src\Orchard\Data\Repository.cs:line 26
   at Orchard.Data.Repository`1.get_Table() in c:\Orchard\src\Orchard\Data\Repository.cs:line 30
   at Orchard.Data.Repository`1.Fetch(Expression`1 predicate) in c:\Orchard\src\Orchard\Data\Repository.cs:line 126
   at Orchard.Data.Repository`1.Get(Expression`1 predicate) in c:\Orchard\src\Orchard\Data\Repository.cs:line 91
   at Orchard.Data.Repository`1.Orchard.Data.IRepository<T>.Get(Expression`1 predicate) in c:\Orchard\src\Orchard\Data\Repository.cs:line 60
   at Orchard.Core.Settings.Descriptor.ShellDescriptorManager.GetDescriptorRecord() in c:\Orchard\src\Orchard.Web\Core\Settings\Descriptor\ShellDescriptorManager.cs:line 57
   at Orchard.Core.Settings.Descriptor.ShellDescriptorManager.GetShellDescriptor() in c:\Orchard\src\Orchard.Web\Core\Settings\Descriptor\ShellDescriptorManager.cs:line 30
   at Orchard.Environment.ShellBuilders.ShellContextFactory.CreateShellContext(ShellSettings settings) in c:\Orchard\src\Orchard\Environment\ShellBuilders\ShellContextFactory.cs:line 66
at Orchard.Environment.DefaultOrchardHost.CreateShellContext(ShellSettings

Я немного погуглил, и большинство сообщений предложили

Check Read/Write Permissions on Default .NET AppPool user for the folders "App_Data, Modules, Media, Themes".

Я проверил разрешения и установил их таким образом. Тем не менее, вы получаете ту же самую ошибку.

Какие-либо предложения? Помощь будет высоко оценена.

Редактировать: Решил сам, см. пост секунд...


person CLauener    schedule 13.05.2014    source источник


Ответы (4)


Другое возможное решение — проверить подключение к БД. В моем случае я пробовал вышеуказанные решения, и он все равно возвращал то же сообщение об ошибке 404. В журналах Orchard/App_Data/logs была обнаружена ошибка, которая больше связана с базой данных, в том же духе, что и «Не удалось создать драйвер из Orchard.Data.Providers.SqlCeDataServicesProvider+OrchardSqlServerCeDriver» в сообщении об ошибке OP.

Я понял, что не установил разрешения группы безопасности для экземпляра RDS на хостинге AWS, чтобы должным образом разрешить доступ экземпляра веб-сервера EC2 к базе данных. Как только я добавил соответствующий экземпляр EC2 (группа безопасности, частью которой на самом деле являются экземпляры EC2, а не только машина), я смог получить доступ к сайту без дальнейших проблем.

Разрешения для папки также имеют решающее значение, но если вы попробуете это, но все равно не повезет, проверьте правильность разрешений для вашей базы данных!

person Paul Hirsch    schedule 04.05.2017
comment
и помните, что строка подключения находится в Settings.txt (попался после переключения на RDS с локального SQL). Перезапустите пул приложений orchard, если вы измените строку подключения. - person Thierry_S; 08.12.2017

У меня была эта проблема раньше, и это исправило ее для меня:

  • Щелкните правой кнопкой мыши AppData и выберите свойства
  • Выберите вкладку «Безопасность», нажмите «Изменить», а затем «Добавить новое имя пользователя».
  • Добавьте «IIS AppPool\InsertAppPoolNameHere»
person Hazza    schedule 13.05.2014
comment
Добавлен пользователь и предоставлены полные права доступа к папке и ее файлам/подпапкам... все то же сообщение об ошибке. - person CLauener; 13.05.2014

Сам решил.

Кажется, мне пришлось добавить полные права доступа к каждой папке в Orchard Root (даже к Core, Config, bin и т. д.), а не только к упомянутым 4.

Если вы погуглили себя и наткнулись на это, попробуйте это.

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

Но спасибо, Хазза, за помощь, это очень ценно.

person CLauener    schedule 14.05.2014

  • Перейдите в папку src->Orchard.Web, щелкните правой кнопкой мыши свойства и выберите вкладку безопасности.

  • Нажмите изменить -> Добавить -> Дополнительно в появившемся окне «Выбор пользователей или групп».

  • Затем нажмите Найти сейчас, чтобы найти доступных пользователей, и после создания списка пользователей добавьте "IIS_IUSRS", а затем ОК.

  • Предоставьте IIS_IUSRS разрешения на изменение.

  • Готово.

person kavinda kosala    schedule 28.10.2014