gpt4 book ai didi

web-services - 使用 F# WsdlService 类型提供程序编译错误

转载 作者:行者123 更新时间:2023-12-04 05:24:54 25 4
gpt4 key购买 nike

我正在 F# 中尝试类型提供程序。我通过以下方式使用 WsdlService 提供程序取得了一些成功:

type ec2 = WsdlService<"http://s3.amazonaws.com/ec2-downloads/ec2.wsdl">

但是当我下载该 wsdl 时,将其重命名为 .wsdlschema 并根据 this example 中指定的方法将其作为本地模式提供:

type ec2 = WsdlService< ServiceUri="N/A", ForceUpdate = false, 
LocalSchemaFile = """C:\ec2.wsdlschema""">

Visual Studio 发出错误消息:

The type provider 'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders' reported an error: Error: No valid input files specified. Specify either metadata documents or assembly files

这个消息是错误的,因为文件很明显是有效的,正如前面的例子所证明的那样。

我已经考虑过权限问题,并在我的用户文件夹中重复了相同的示例,确保在这两种情况下都向所有用户授予完全控制权,并以管理员身份运行 VS。

为什么 F# 编译器认为文件无效?

编辑#1:我已经确认,做同样的事情对 http://gis1.usgs.gov/arcgis/services/gap/GAP_Land_Cover_NVC_Class_Landuse/MapServer?wsdl 不起作用。或者(USGS 植被相关 API),而在线引用 wsdl 可以正常工作。

最佳答案

嗯,似乎类型提供程序相当顽固和不灵活,因为它在使用 LocalSchemaFile 选项时需要一个真正的“wsdlschema”文档。一个 wsdlschema 文档可以在其中包含多个 .wsdl 和 .xsd 文件,这些文件被包装在一些 XML 中以将它们分开。我猜这是微软工具链中的某种标准东西,但也许其他人(例如亚马逊)不会公开这样的东西。

TP 尝试做的第一件事是将 wsdlschema 文件解压成单独的部分,遗憾的是,如果实际上不需要解压,它会做错事。然后,当它尝试将 svcutil.exe 指向解压缩的架构文件以执行代码生成时,它会因您看到的错误消息而终止。

解决方法:将预期的 XML 位添加到您的文件中,它将起作用。

<?xml version="1.0" encoding="utf-8"?>
<ServiceMetadataFiles>
<ServiceMetadataFile name="ec2.wsdl">

[body of your WSDL goes here]

</ServiceMetadataFile>
</ServiceMetadataFiles>

关于web-services - 使用 F# WsdlService 类型提供程序编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22096024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com