5

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

错误 1160 “ParameterizeTransformXml”任务意外失败。System.UriFormatException:无效的 URI:URI 为空。在 System.Uri.CreateThis(String uri, Boolean 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, Boolean & taskResult)

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

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

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

4

3 回答 3

5

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

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

我的错误是以下设置:

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

注意“大于”符号!

我通过将设置更改为:

<setting name="InvalidItemNameChars" value="\/:?&quot;&lt;&gt;|[]" />
于 2012-02-13T22:58:34.430 回答
1

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

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

于 2011-05-25T16:43:05.563 回答
0

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

于 2017-07-20T13:55:22.223 回答