我在Azure PowerShell中运行此命令以部署我的节点项目:
Publish-AzureServiceProject -ServiceName <name> -Location "East US"
使用我的服务名称代替<name>
。
每次运行此操作时,都会收到错误消息:
Publish-AzureServiceProject : Object reference not set to an instance of an
object.
At line:1 char:1
+ Publish-AzureServiceProject -ServiceName <name> -Location "East US"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Publish-AzureServiceProject], N
ullReferenceException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.CloudService.Pub
lishAzureServiceProjectCommand
有人可以帮忙吗?我在这里引用了类似的问题引用Visual Studio中的部署,但是我不知道如何(或者我是否可以)采取建议这些问题的步骤,因为我正在从命令行构建节点项目。 / p>
更新:确认我已添加证书。这显然是发布配置文件导入的一部分。我也尝试了手动身份验证方法,但似乎都不起作用。我仍然得到完全相同的错误。
更新2:如果我在此目录中运行Publish-AzureServiceProject
,即使没有任何参数,该命令也会失败并显示相同的错误。这使我相信不正确的参数值不是问题。
我现在认为问题出在我的ServiceDefinition.csdef上,虽然我不确定。我开始使用新的Node应用来测试发布。即使没有在Azure中创建新服务,我也能够开始发布并获得进一步使用此应用程序。
这是我的ServiceDefinition.csdef。我已经删除了服务名称以防可能存在安全风险。
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="<name>" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WorkerRole name="CoreServer" vmsize="ExtraSmall">
<Startup>
<Task commandLine="setup_worker.cmd > log.txt" executionContext="elevated">
<Environment>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
<Variable name="RUNTIMEID" value="node" />
<Variable name="RUNTIMEURL" value="http://az413943.vo.msecnd.net/node/0.8.4.exe" />
</Environment>
</Task>
<Task commandLine="node.cmd .\startup.js" executionContext="elevated" />
</Startup>
<LocalResources>
<LocalStorage name="AGS_Working_Directory" sizeInMB="1024" />
</LocalResources>
<Endpoints>
<InputEndpoint name="HttpIn" protocol="tcp" port="80" />
</Endpoints>
<Runtime>
<Environment>
<Variable name="PORT">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/Endpoints/Endpoint[@name='HttpIn']/@port" />
</Variable>
<Variable name="EMULATED">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
</Environment>
<EntryPoint>
<ProgramEntryPoint commandLine="node.cmd .\server.js" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
</WorkerRole>
</ServiceDefinition>
DeployTesting.ps1脚本:
$scriptDir = Split-Path $MyInvocation.MyCommand.Path -Parent
Set-Location $ScriptDir
Copy-Item $ScriptDir\CoreServer\node_modules\dbResources.js.test -Destination $scriptDir\CoreServer\node_modules\dbResources.js
Publish-AzureServiceProject -ServiceName <name> -Location "East US" -Slot staging
发布在Github上的问题:https://github.com/Azure/azure-sdk-tools/issues/2463
答案 0 :(得分:2)
您使用的是哪个版本的PowerShell?
我的猜测是,powersahell期望的地方缺少构成服务的其中一个文件。较新版本的PowerShell需要服务目录中的以下文件:
(1)ServiceDefinition.csdef (2)ServiceConfiguration.Cloud.cscfg (3)ServiceConfguration.Local.cscfg (4)包含角色文件的目录,名称与角色名称匹配
旧版本还需要
deploymentSettings.json
请提交Ogail建议的错误并包含您的服务目录详细信息
或者github网址已经更改,现在是
答案 1 :(得分:1)
您能否在https://github.com/WindowsAzure/azure-sdk-tools/issues/上提出问题并附上您的服务项目文件夹?这有助于调试问题。
谢谢, Elogeel