我认为这将是一个相当简单的任务,并且有相当多的文档,但我没有任何运气,并假设它几乎都过时了.
我有一段时间以来一直在开发的.NET Core MVC 6 Web App,需要在Azure上为它设置一个WebJob.我想使用Azure提供的应用程序已经在使用的持续部署系统将其与应用程序一起部署.根据Kudu文件,它是可能的:
哪个州:
这在直接从Visual Studio(WebDeploy)部署或通过git部署时都适用.
它引用了这个链接(https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-deploy-webjobs/),我一直试图遵循这个链接但没有成功.
我有最新版本的Visual Studio 2015,.NET Core 1.0.0和Tools以及Azure SDK.
显而易见的第一件事是我没有Azure文档屏幕截图中显示的脚手架选项,并且在找不到任何遗漏的依赖关系后,我试图按照描述手动设置它.
即使将所需文件放在指定的位置(webjobs-list.json
和webjob-publish-settings.json
)并为我的项目配置它们并添加Microsoft.Web.WebJobs.Publish
到WebJob项目之后,Kudu也没有通过连续部署系统找到WebJob.
我已经根据我在那里发现的文档尝试了几种方法和变体,但我无法让它工作,所有其他SO问题都是一年之久.
有谁知道我做错了什么?使用最新版本的.NET Core MVC,这是否仍然可行?
由于IIS8功能称为HttpPlatformHandler ,因此可以在Azure Web Apps上运行suave.io应用程序.我尝试以相同的方式运行自托管的OWIN应用程序,但在启动时遇到异常:
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.HttpListenerException: Access is denied
at System.Net.HttpListener.SetupV2Config()
at System.Net.HttpListener.Start()
at Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(HttpListener listener, Func`2 appFunc, IList`1 addresses, IDictionary`2 capabilities, Func`2 loggerFactory)
at Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(Func`2 app, IDictionary`2 properties)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] …
Run Code Online (Sandbox Code Playgroud) 我有一个deploy.cmd
用于部署Azure网站的自定义文件.在构建和部署网站本身之前,它会执行一些自定义操作,例如安装Typesjs版本的Typescript和minifier,然后运行单元测试.
我遇到的问题是,运行此脚本似乎需要花费越来越长的时间,至少在Azure上运行.在我的开发笔记本电脑上,运行deploy.cmd
脚本大约需要90秒.但是当我在Azure上推出它时,运行时需要15-20分钟(有时甚至超过30-40分钟).我并不感到惊讶,它的花费更长的时间了Web服务器上-我感到有点惊讶,它的时间要长10倍以上.
这是最近部署的日志文件的精简版本:
Command: deploy.cmd
18:54:16.89 - Starting deploy script
18:54:19.92 - Installing typescript
18:54:30.90 - Installing minifier
18:54:44.62 - Restoring Nuget Packages
18:55:48.25 - Building solution
18:59:09.12 - Building test projects
19:04:03.67 - Running Payboard.Common.Tests.dll
19:04:19.80 - Running Payboard.Model.Tests.dll
19:04:25.25 - Running Payboard.Services.Tests.dll
19:06:29.72 - Running Payboard.Integrations.Tests.dll
19:06:49.46 - Running Payboard.Web.Tests.dll
19:07:56.99 - Beginning KuduSync
19:08:03.16 - Finished successfully.
Run Code Online (Sandbox Code Playgroud)
显然,这是大多数时间占用的两个构建步骤.我想我可以将它们合并到一个单独的构建步骤中 - 虽然我不完全确定它如何与KuduSync一起使用.
关于如何提高速度的任何其他建议?或者这基本上只是预期?
我的问题是我需要在构建后运行自定义cmd文件.我不想修改部署脚本,而只想轻松地向我的部署运行一些MSDOS命令.
我需要做的任务是在构建成功后在位于/source/copyextrafiles.cmd的存储库中运行cmd.
我怎样才能做到这一点?
我现在一直在努力解决这个问题.我正在尝试让我的ASP.NET Core 2.1应用程序在Azure App Service上运行.
这是我在Kudu看到的奇怪行为.
我dll
在Kudu控制台中看到了我的项目文件D:\home\site\wwwroot
.然后我键入dotnet run myproject.dll
,我收到以下错误:
找不到要运行的项目.确保D:\ home\site\wwwroot中存在项目
知道这里发生了什么吗?
几天前,微软发布了他们用来对Azure进行git部署的引擎.我在TODO列表上有一段时间在DEV IIS服务器上设置了这种功能,所以我有兴趣尝试Kudu.
" 入门 "文档显示了如何运行Web前端,但其中的所有内容都使用" http:// localhost:PORTNUMBER "类型的URL用于git存储库,站点URL等.
我意识到这可能远远超过它们,但我想知道是否有人指出如何在"常规"IIS而不是所有localhost位上使用真实域设置它?
我在azure web应用程序上运行nodejs应用程序,我正在尝试使用npm在其中集成babel.问题是,巴贝尔正试图接受一个档案
%用户资料%
名为.babel.json,一个不存在的文件.这很可能通过以下方式安装:
npm install -g babel
Run Code Online (Sandbox Code Playgroud)
在天蓝色的网络应用程序上,我似乎根本找不到它(甚至在npm install -g babel
为网站运行kudu 之后).
我将%USERPROFILE%
自己的文件复制到%USERPROFILE%
使用kudu但在网络应用程序重启时文件消失了.
有没有办法让babel在网络应用上工作?
UPDATE
我确实省略了一些东西.我尝试加载时出现错误babel/register
.
require('babel/register')({
optional: ["es7.asyncFunctions"]
});
Run Code Online (Sandbox Code Playgroud)
我在流媒体日志中看到的实际错误是
应用程序抛出未捕获的异常并终止:错误:ENOENT,在Object.f的Object.fs.openSync(fs.js:438:18)处没有此类文件或目录"D:\ local\UserProfile.babel.json" .writeFileSync(fs.js:977:15)处于保存状态(D:\ home\site\wwwroot \node_modules\babel \node_modules\babel-core\lib\api\register\cache.js:35:19). _tickCallback(node.js:419:13)在函数.Module.runMain(module.js:499:11)启动时(node.js:119:16)在node.js:906:3
该项目在Github上
按照 Azure Kudu 网页的建议,尝试从 curl 访问 Azure App 日志流。我在 Windows 10 命令提示符下。这是我正在尝试的示例命令行:
curl -u myUserName https://myApp.scm.azurewebsites.net/api/logstream
Enter host password for user 'myUserName':<password typed here>
Run Code Online (Sandbox Code Playgroud)
myApp
: 是我的 Azure 应用服务的名称。
myUserName
:
$myApp
并且密码是一些 60 字符长的字符串时。在这两种情况下,curl 都会显示网页标题401的内容- 未经授权:由于凭据无效,访问被拒绝。. 我还尝试将用户名用双引号括起来,并用反斜杠 (\) 转义美元符号 ($)。没运气。
我一定是在做一些非常愚蠢的事情。我已经阅读了几个文档和帖子,比如官方 Kudu 文档,msdn,在 SO 上,我想我正在按照说明进行操作。其他来源:再次 MSDN,旧的 seirer 帖子。
编辑
经过建议,我尝试使用用户级部署凭据和 …
我已使用 Azure DevOps 将 .Net Core Web 应用程序部署到 Azure 应用服务。现在,当我尝试使用 Kudu 在“D:\home\site\wwwroot”中创建文件时,它说:
409 冲突:无法写入本地资源 'D:\home\site\wwwroot\anc' > 由于错误'找不到文件 'D:\home\site\wwwroot\anc'。'。
我注意到“D:\home\site\wwwroot”目录上的权限与我使用发布配置文件部署的类似 Web 应用程序中的权限不同
在有问题的应用程序上获取 Acl 结果:
PS D:\home\site\wwwroot> Get-Acl "D:\home\site\wwwroot"
Get-Acl "D:\home\site\wwwroot"
Directory: D:\home\site
Path Owner Access
---- ----- ------
wwwroot IIS APPPOOL\luncher-dev NT AUTHORITY\SYSTEM Allow FullControl...
Run Code Online (Sandbox Code Playgroud)
在其他类似应用上获取 Acl 结果:
PS D:\home\site\wwwroot> Get-Acl "D:\home\site\wwwroot"
Get-Acl "D:\home\site\wwwroot"
Directory: D:\home\site
Path Owner Access
---- ----- ------
wwwroot BUILTIN\Administrators Everyone Allow DeleteSubdirectoriesAndFiles,...
Run Code Online (Sandbox Code Playgroud)
来自 Azure DevOps 的相应发布管道
如何使 wwwroot 目录可写?
我们将多个 AspNetCore 应用程序作为 OutOfProcess 托管在 Azure Web 应用程序上,并部署为具有不同路径的虚拟应用程序。
我们在不同的环境中有相同的设置,所有基础设施和应用程序都通过我们的管道自动部署,但它只在一个环境中中断,我们无法找出原因。
我们已尝试将 stdoutLogEnabled 设为 true。这揭示了一个无效的 runtime.config.json 错误,我读过这可能是由多个问题引起的,但我们无法确定任何原因。在导航到每个应用程序的 swagger URL 时,我们还会间歇性地看到 502.5 ANCM 启动失败。
如果我们查看 Azure 门户中的应用程序事件日志,就会看到此错误 failed to start process with command line 'dotnet .\<DLL>' with multiple retries. Failed to bind to port <PortNumber>
我们可以通过导航到 DLL 的位置并运行dotnet <DLL>
. 应用程序成功启动,所以它似乎是网络应用程序上的问题。我们尝试重新启动、停止和启动 Web 应用程序,甚至尝试扩展应用程序服务以尝试重新启动,但没有任何成功。
我不确定我们可以采取哪些其他步骤来诊断这个问题,或者我们可能做错了什么,因为相同的应用程序在其他环境中运行良好。
kudu ×10
azure ×9
asp.net-core ×2
.net-core ×1
asp.net-mvc ×1
azure-cli ×1
azure-devops ×1
babeljs ×1
git ×1
iis ×1
node.js ×1
owin ×1
suave ×1