我在 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 部署的类似问题,但我不知道如何(或者我是否可以或应该)针对这些问题采取建议的步骤,因为我正在从命令行构建节点项目。
更新:确认我已经添加了我的证书。这显然是发布配置文件导入的一部分。我也尝试过手动身份验证方法,但似乎都不起作用。我仍然得到完全相同的错误。
更新 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