Проблема запуска AppHarbor NopCommerce - PullRequest
1 голос
/ 31 октября 2011

Я загрузил решение nopcommerce в appharbor (используя этот метод Невозможно построить проект notcommerce под appharbor ), и решение успешно собрано, но я получил ошибку 403 - Запрещено: доступ запрещен при попытке открыть страницуРазрешить запись-доступ к файловой системе в значение true).

Спасибо и надеемся на вашу помощь

Ответы [ 3 ]

2 голосов
/ 24 апреля 2012

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

Сначала исправим в Webhelper.cs: 75

public virtual string GetThisPageUrl(bool includeQueryString, bool useSsl)
        {
            string url = string.Empty;
            if (_httpContext == null)
                return url;

            if (includeQueryString)
            {
                string storeHost = GetStoreHost(useSsl);
                if (storeHost.EndsWith("/"))
                    storeHost = storeHost.Substring(0, storeHost.Length - 1);
                url = storeHost + _httpContext.Request.RawUrl;
            }
            else
            {
#if DEBUG
                var uri = _httpContext.Request.Url;

#else
                //Since appharbor changes port number due to multiple servers, we need to ensure port = 80 as in AppHarborRequesWrapper.cs
                var uri = new UriBuilder
                {
                    Scheme = _httpContext.Request.Url.Scheme,
                    Host = _httpContext.Request.Url.Host,
                    Port = 80,
                    Path = _httpContext.Request.Url.AbsolutePath,
                    Fragment = _httpContext.Request.Url.Fragment,
                    Query = _httpContext.Request.Url.Query.Replace("?", "")
                }.Uri;
#endif
                url = uri.GetLeftPart(UriPartial.Path);
            }
            url = url.ToLowerInvariant();
            return url;
        }

Итакмы просто добавили файлы из https://gist.github.com/1158264 в Nop.Core \ AppHarbor

и модифицировали базовые контроллеры:

  • nopcommerce \ Presentation \ Nop.Web\ Controllers \ BaseNopController.cs

    public class BaseNopController : Controller
    {
        protected override void Initialize(RequestContext requestContext)
        {
            //Source: https://gist.github.com/1158264
            base.Initialize(new RequestContext(new AppHarborHttpContextWrapper(System.Web.HttpContext.Current),
                                               requestContext.RouteData));
        }
        //Same file from here downwards...
    }
    
  • nopcommerce \ Presentation \ Nop.Web.Admin \ Controllers \ BaseNopController.cs

    public class BaseNopController : Controller
    {
    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        //set work context to admin mode
        EngineContext.Current.Resolve<IWorkContext>().IsAdmin = true;
    
        //Source: https://gist.github.com/1158264
        base.Initialize(new RequestContext(new AppHarborHttpContextWrapper(System.Web.HttpContext.Current), requestContext.RouteData));
    
        //base.Initialize(requestContext);
    }
        //Same file from here downwards...
    }
    
2 голосов
/ 27 декабря 2011

Проблема в том, что стандартное решение NopCommerce содержит два веб-проекта. AppHarbor развертывает только один веб-проект для каждого приложения, и в этом случае нам приходится развертывать Nop.Admin, а это не то, что вам нужно.

Чтобы решить эту проблему, вы должны воспользоваться соглашением для файла решения *1004* AppHarbor и создать файл решения AppHarbor.sln, который ссылается только на проект Nop.Web.

1 голос
/ 12 декабря 2015

Включить функцию просмотра каталогов в IIS Express

Примечание. Этот метод предназначен для веб-разработчиков, у которых возникла проблема при использовании IIS Express.

Для этого выполните следующие действия: Откройтекомандной строки, а затем перейдите в папку IIS Express на вашем компьютере.Например, перейдите в следующую папку в командной строке: C: \ Program Files \ IIS Express Введите следующую команду и нажмите клавишу ВВОД: appcmd set config / section: directoryBrowse / enabled: true

refrence:https://support.microsoft.com/en-us/kb/942062

...