【问题标题】:While publishing a release version through web-deploy I get an error通过 web-deploy 发布发布版本时出现错误
【发布时间】:2011-07-10 18:53:00
【问题描述】:

我发生了一些奇怪的事情。我使用 web.config 转换文件,当尝试作为 web 部署发布到本地 iis 时,我收到以下错误:

错误 1160 “ParameterizeTransformXml”任务意外失败。 System.UriFormatException:无效的 URI:URI 为空。在 System.Uri.CreateThis(字符串 uri,布尔值 dontEscape,UriKind uriKind) 在 System.Uri..ctor(String uriString) 在 Microsoft.Web.Publishing.Tasks.ParameterizeTransformXml.Execute()
在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost、ItemBucket bucket、TaskExecutionMode howToExecuteTask、 布尔值&任务结果)

在我向项目中添加一些图像文件之前它确实有效,并且在转换文件基本仍然相同时它在调试模式下有效。

有没有人遇到过这种情况并知道是什么原因造成的?

这是在 Visual Studio 2010 和框架 4.0、Windows 7 下。

【问题讨论】:

    标签: visual-studio-2010 web-deployment


    【解决方案1】:

    我收到了同样的错误信息。它发生在我复制新版本的 web.config 之后,有人在其他环境中手动进行了许多更改。

    我使用准二进制搜索发现了该问题。 IE。使用 Beyond Compare,我将复制前半部分的更改,看看它是否仍然产生错误。如果是这样,那么我将重新开始,并且只在第一季度的更改等中复制......

    我的错误是以下设置:

    <setting name="InvalidItemNameChars" value="\/:?&quot;&lt;>|[]" />
    

    注意“大于”符号!

    我通过将设置更改为:

    <setting name="InvalidItemNameChars" value="\/:?&quot;&lt;&gt;|[]" />
    

    【讨论】:

    • 我遇到了同样的问题。该项目在属性值(如 >)中使用未编码的实体构建良好,但它不会正确转换。 > 在解析器中突然关闭标签并导致这个非常模糊的错误。解决方法是将其编码为>。这似乎是一个错误,Microsoft 应该通过使用明确的消息使构建失败,或者允许此 TransformXml 步骤处理与构建过程的其余部分相同的 XML 违规来解决。
    【解决方案2】:

    某些东西可能编辑了配置文件,可能是主 web.config(很可能)或转换,也可能将编码格式从 ANSI 切换到 UTF8 或类似的,并且混淆了转义字符。

    我只在将当前版本和旧版本保存为文件并使用无法比较的数据比较时才发现它。请注意,之前使用复制粘贴到每个比较窗口的比较没有显示问题,因此请使用文件进行比较。

    【讨论】:

      【解决方案3】:

      将文件编码更改为带有 Windows 换行符的 UTF8。这可以通过访问File &gt; Advanced Save Options 来完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-18
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多