none
Application page редиректится из /_layouts/15/MySol/GetOrg.aspx в /_layouts/MySol/GetOrg.aspx и сваливается с ошибкой "file does not exist" в ULS RRS feed

  • Вопрос

  • Написал свою Sharepoint Application page, отнаследованную от System.Web.UI.Page.

    Убрал из aspx файла ссылку DynamicMasterPageFile в директиве <%@ Page...- т.к. страница должна генерить  чистый JSON на выходе.

    На разработческом сервере SPS2013 она работает прекрасно и открывается по адресу /_layouts/15/MySol/GetOrg.aspx

    Но после установки на продакшн - сервер, почему-то начинает перебрасывать её на адрес /_layouts/MySol/GetOrg.aspx  и вываливается ошибка с correlation ID  - "file does not exist" в ULS:

    Error=The file '/_layouts/MySol/GetOrg.aspx' does not exist.  
     at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)    
     at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal

Ответы

  • Добрый день,

    возможно мои предположения верны:

    SharePoint 2013 allows users to run sites in SharePoint 2010 mode.  In this scenario, the solution (WSP) deployment needs to be deployed with the “CompatibilityLevel” flag set to “All”  or {14,15}.

    When deploying the solution from the Central Administration UI, there’s no option to set the “CompatibilityLevel” flag and therefore the deployment job reverts to using the “SharePointProductVersion” attribute in the solution manifest.  Since the “SharePointProductVersion” attribute can only be set to a single number, solution deployment from CA is limited to using that number for the “CompatibilityLevel” setting.

    The suggested method for this type of deployment is to use PowerShell:

    Install-SPSolution –Identity Solution.wsp –GACDeployment –CompatibilityLevel {14,15}

    • Помечено в качестве ответа aland17 4 июня 2015 г. 14:36
    3 июня 2015 г. 11:27

Все ответы

  • Добрый день,

    If the file in the virtual path is *.aspx, SharePoint will automatically detect the mode of the current site collection and return the file from the appropriate hive. So you do not have to insert the "/15" into the virtual path.

    Virtual directories in SharePoint 2013 solutions

  • не совсем понятно:

    Файл физически установлен в папку: \15\TEMPLATE\LAYOUTS\MySol

    Виртуальная папка "/_layouts/"  - смотрит на физическую: \14\template\layouts

    Внутри неё есть папка "/_layouts/15/" - смотрит на физическую \15\template\layouts

    я обращаюсь по веб-адресу http://server/_layouts/15/MySol/GetOrg.aspx

    сервер выдаёт http-заголовок 302 и редиректит на http://server/_layouts/MySol/GetOrg.aspx

    (где её, действительно, нет) - и генерит в логе ошибку file does not exists.

    Когда я руками скопировал папку моего решения в \14\template\layouts - ошибка исчезла.

    3 июня 2015 г. 10:02
  • Добрый день,

    а что у вас показывает свойство SPSite.CompatibilityLevel ?

    И еще посмотрите виртуальные директории на IIS сервере.
    3 июня 2015 г. 10:36
  • Посмотрите, возможно у этой сайт коллекции стоит режим SP2010:

    Найдите все такие сайт коллекции командой:

    Get-SPSite -Limit all -CompatibilityLevel 14

    Просто продакшен отличается тем, что чаще он не устанавливается с 0, а происходит миграция с более ранних версий. А ваш тестовый сервер вы установили с 0, и они изначально имеют разную конфигурацию.
    3 июня 2015 г. 11:07
  • Добрый день,

    или как вариант установите решение на продакшен в режиме совместимости с двумя вариантами:

    Install-SPSolution –Identity Solution.wsp –GACDeployment –CompatibilityLevel {14,15}

    Через CA нет возможности выбора, только через PS.

    3 июня 2015 г. 11:20
  • Добрый день,

    возможно мои предположения верны:

    SharePoint 2013 allows users to run sites in SharePoint 2010 mode.  In this scenario, the solution (WSP) deployment needs to be deployed with the “CompatibilityLevel” flag set to “All”  or {14,15}.

    When deploying the solution from the Central Administration UI, there’s no option to set the “CompatibilityLevel” flag and therefore the deployment job reverts to using the “SharePointProductVersion” attribute in the solution manifest.  Since the “SharePointProductVersion” attribute can only be set to a single number, solution deployment from CA is limited to using that number for the “CompatibilityLevel” setting.

    The suggested method for this type of deployment is to use PowerShell:

    Install-SPSolution –Identity Solution.wsp –GACDeployment –CompatibilityLevel {14,15}

    • Помечено в качестве ответа aland17 4 июня 2015 г. 14:36
    3 июня 2015 г. 11:27