2

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

4

2 回答 2

2

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

我的猜测是构成服务的文件之一在 powersahell 期望的地方丢失了。较新版本的 PowerShell 需要服务目录中的以下文件:

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

旧版本也需要

部署设置.json

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

或者github url变了,就是现在

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

于 2014-04-30T00:21:21.090 回答
1

Could you please file an issue on https://github.com/WindowsAzure/azure-sdk-tools/issues/ and attach your service project folder? This will help in debugging the problem.

Thanks, Elogeel

于 2014-04-29T23:39:53.487 回答