Umbraco 6 - GET / bundles / bundlename 404

时间:2016-08-25 10:51:46

标签: asp.net azure msbuild umbraco

我不是IIS管理员,不是Umbraco用户,也不是.NET开发人员,但是。

我们有一个Umbraco应用程序,从另一个代理商迁移到我们的代理商。它适用于Azure,WebApp。

问题是:开发人员团队添加了新的语言环境 - 但我们无法使其在我们的环境中运行(但它可以在开发人员的工作站上本地运行)。此外 - 所有旧的语言环境 - 工作正常(下例中的FR)。

我们已将语言环境包添加到./App_Start/BundleConfig.cs

...
var fr_fr = new ScriptBundle("~/bundles/script_fr_fr");
var pl_pl = new ScriptBundle("~/bundles/script_pl_pl");
...
SetCommonIncludes(pl_pl);
pl_pl.Include(
     "~/client/scripts/ui/dialog/AgeGateDialog_pl_pl.js"
);
...
bundles.Add(fr_fr);
bundles.Add(pl_pl);
bundles.Add(standAloneiFramePage);
...

但是在应用程序构建(使用msbuild)并部署(使用msdeploy)之后 - fr_fr 章节工作,而 pl_pl - 给出404错误:

> Request
> URL:http://applicationstaging2.azurewebsites.net/bundles/script_pl_pl
> Request Method:GET Status Code:404 Not Found

我们的umbracoReservedPaths文件中有web.config,其中包含:

...
<add key="umbracoReservedPaths" value="~/umbraco,~/install/,~/api,~/Content,~/Controllers,~/Views,~/Areas,~/radio,~/bundles,~/bundles/" />
...

正如我从googled链接中所理解的那样 - &#34;捆绑&#34;是一个基于内存的对象,在接受GET请求后由.NET(自4.5版)应用程序创建。然后应用程序&#34;生成&#34;该对象包含一些JS / CSS / etc数据,将其放入内存中,必须通过路径~/bundles/scriptname返回。即 - 它不是文件系统对象,因此 - 我无法直接检查服务器上的文件(并且无法在内存中找到它,因为这不是普通的Linux机箱,所有GNU&#39 ; s实用程序)。

我很困惑 - 从哪里开始调查,如何解决这个问题。或者至少 - 如何调试它(Azure&#39; s&#34;应用程序&#34;和#34; Web服务器&#34;日志 - 绝对无用的东西)。

任何提示赞赏。

1 个答案:

答案 0 :(得分:0)

我们的问题是由于Bin目录中的dll文件在构建期间未更新。

我们的build.bat脚本是:

...
echo [%ME%] Running NuGet restore

%NUGET% restore %SOLUTION%
if %errorlevel% neq 0 exit /b %errorlevel%

echo [%ME%] Running MSBuild

%MSBUILD% %SOLUTION%
if %errorlevel% neq 0 exit /b %errorlevel%
...

/t:Clean,Build添加到%MSBUILD% %SOLUTION%行修复问题的末尾:

...
%MSBUILD% %SOLUTION% /t:Clean,Build
if %errorlevel% neq 0 exit /b %errorlevel%
...

我做了第二次更新 - 在deploy.bat脚本中添加了-verb:delete

...
echo [%ME%] Cleaning up application
%MSDEPLOY% -enableRule:AppOffline -verb:delete -dest:contentPath='%CONTENTPATH%',ComputerName="%COMPUTERNAME%/msdeploy.axd?site=%SITE%",UserName='%USERNAME%',Password='%PASSWORD%',AuthType="Basic"
...

在准确部署之前:

...
echo [%ME%] Deploying new application
%MSDEPLOY% -enableRule:AppOffline -verb:sync -source:contentPath="%cd%\server\JaegermeisterPlatform_Soln\%SITENAME%" -dest:contentPath='%CONTENTPATH%',ComputerName="%COMPUTERNAME%/msdeploy.axd?site=%SITE%",UserName='%USERNAME%',Password='%PASSWORD%',AuthType="Basic" -setParamFile=%PROPERTYFILE%
...