"对象引用未设置为对象的实例"当我尝试通过CLI部署我的Azure云服务时

时间:2014-04-21 20:30:59

标签: powershell azure azure-powershell

我在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 &gt; 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

2 个答案:

答案 0 :(得分:2)

您使用的是哪个版本的PowerShell?

我的猜测是,powersahell期望的地方缺少构成服务的其中一个文件。较新版本的PowerShell需要服务目录中的以下文件:

(1)ServiceDefinition.csdef (2)ServiceConfiguration.Cloud.cscfg (3)ServiceConfguration.Local.cscfg (4)包含角色文件的目录,名称与角色名称匹配

旧版本还需要

deploymentSettings.json

请提交Ogail建议的错误并包含您的服务目录详细信息

或者github网址已经更改,现在是

https://github.com/Azure/azure-sdk-tools/issues

答案 1 :(得分:1)

您能否在https://github.com/WindowsAzure/azure-sdk-tools/issues/上提出问题并附上您的服务项目文件夹?这有助于调试问题。

谢谢, Elogeel