使用命令行工具cspack时出错

时间:2016-04-05 13:04:05

标签: azure

执行cspack命令时出现以下错误 "错误CloudServices051:XML规范无效:元素' WebRole'在命名空间' http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition'内容不完整。预期可能元素列表:'网站'在命名空间' http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition'。"

$sql = "INSERT INTO mail_queue SET email = ?, body = ?, subject = ?"
$statement = $db->prepare($sql);
$statement->bindParam(1, $row['email']);
$statement->bindParam(2, $body);
$statement->bindParam(3, $subject);
$statement->execute();

1 个答案:

答案 0 :(得分:0)

我猜你的例子是你正在使用Sririam Krishnan的书 Programming Windows Azure

这是在2010年5月发布的。要么这本书提供了一个破碎的例子,或者从那时起已经向Azure框架引入了一些重大变化。

以下是第51页的ServiceDefinition.csdef文件,经过修改后可与Azure SDK v2.8一起使用:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="CloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" > 
  <WebRole name="WebRole1" enableNativeCodeExecution="false">
    <InputEndpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </InputEndpoints>
    <ConfigurationSettings />
    <!-- This sites node was not included in the example -->
    <Sites>
        <Site name="TokenSite" physicalDirectory="htmlwebsite">
            <Bindings>
                <Binding name="BindingOne" endpointName="HttpIn" />
            </Bindings>     
        </Site>
    </Sites>
  </WebRole>
</ServiceDefinition>

添加是Sites节点,包含一个站点。 physicalDirectory属性必须指向包含html文件的文件夹。在我添加Sites节点之前,cspack实用程序失败了。

有趣的是,如果您阅读了Azure Online Documentation中的Sites元素(最后更新于2015年4月15日),则会明确说明:

  

如果您未指定Sites元素,则您的Web角色将作为旧版Web角色托管,并且您的Web角色中只能托管一个网站。 ...此元素是可选的,角色只能有一个网站阻止。 (我的斜体)