从Github&部署新的Relic Instrumented Site到Azure的错误VS.NET

时间:2013-07-06 21:53:51

标签: azure newrelic

我收到以下错误:

Error: The process cannot access the file 'C:\DWASFiles\Sites\mywebsitename\VirtualDirectory0\site\wwwroot\newrelic\NewRelic.Agent.Core.dll' because it is being used by another process.

在尝试从Github部署Azure网站时,在运行部署命令...日志文件中。

对于可能导致此问题的任何指示表示感谢。

更新:当使用以下内容直接从VS.NET发布时,这也是失败的:

1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4196,5): Warning : An error was encountered when processing operation 'Create File' on 'NewRelic.Agent.Core.dll'.  
1>Retrying operation 'Update' on object filePath (mywebsitename\newrelic\NewRelic.Agent.Core.dll). Attempt 1 of 2.
1>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4196,5): Error : Web deployment task failed. ((06/07/2013 23:54:58) An error occurred when the request was processed on the remote computer.)

之前有效,我不知道它为什么会停止。

6 个答案:

答案 0 :(得分:13)

NewRelic建议停止网站卸载文件并允许部署完成。

作为替代方案,您可以在配置选项卡上的应用程序设置中将COR_ENABLE_PROFILING设置为0,以暂时禁用分析,这样您就可以继续部署,同时让网站始终正常运行。

答案 1 :(得分:8)

您可以通过manage.windowsazure.com上的配置标签临时关闭New Relic监控,而不是停止网站:

配置>开发人员分析>选择" OFF" >保存

部署

配置>开发人员分析>选择" ADD-ON" >从下拉列表中选择加载项>保存

为我工作,包括VS的常规部署和VSO的自动构建。

答案 2 :(得分:3)

这是执行代理升级时Azure网站的New Relic .NET代理的已知问题。解决方法是停止网站发布dll,完成部署,然后重新启动实例。

https://newrelic.com/docs/dotnet/azure-web-sites#h2-1

答案 3 :(得分:1)

不是真正的解决方案,而是更多的解决方法,在发布对话框中查看更改的预览并取消选中NewRelic.Agent.Core.dll文件,以便它不会被发布。

答案 4 :(得分:0)

这些答案都不适合我。我有一个Azure基础层网站计划,它托管多个实际网站。

如果我不停止网站,我会收到上面提到的错误(newrelic.agent.core.dll正在使用中)...

如果我确实停止了网站(或所有网站),我会收到错误消息,说明发布端点不可用。

如果我转到配置选项卡并禁用AddOn,我们仍然会收到上面提到的错误(newrelic.agent.core.dll正在使用中)...

我们只是一遍又一遍地重新发布上述不同的排列,直到有效。前几天花了我几个小时,今天花了我10分钟。

答案 5 :(得分:0)

如果您使用的是webdeploy,则可以配置webdeploy设置以使其忽略该文件。但是,如果这样做,您将手动必须将任何更新部署到新的文本代理。

我遇到了类似的问题,新的文件日志文件被锁定,并通过以下方式解决:

  1. 将新的遗留日志文件移至网络根目录的子目录(例如\ newreliclogs)
  2. 在我的powershell脚本中添加2行,配置skip指令忽略整个目录。例如(其中destBaseOptions的类型为Microsoft.Web.Deployment.DeploymentBaseOptions

    $ skipDirective = new-object Microsoft.Web.Deployment.DeploymentSkipDirective(" NewRelicLog"," objectName = dirPath,absolutePath =。* \ newreliclogs $")

    $ destBaseOptions.SkipDirectives.Add($ skipDirective)

  3. 根据您使用webdeploy的方式,配置略有不同,我使用以下链接帮助我将它拼凑在一起:

    我在https://library.octopusdeploy.com/#!/step-template/actiontemplate-web-deploy-publish-website-(msdeploy)使用了Octopus Deploy Library中的powershell脚本。