我得到了一个 WSDL 文件和几个 XSD 文件来为其构建 Web 服务。现在我正在尝试将其设置为接收请求和响应。
我在 Web 服务方面的经验仅限于带有 asmx 文件等的旧版 asp。
XSD 文件中有很多信息,我不想手动构建这些类,我也不真正理解这到底需要什么(我想只是一个 xml 可序列化类,但还没有'调查了它)。
我从哪里开始呢?我查看了 WCF,但它对我来说完全陌生,所以我宁愿使用旧样式,但我正在努力寻找有关如何设置它或从 XSD 文件自动生成类的先机的任何信息.
我确实尝试了一下 WCF,但是当我尝试生成 WebService 代码时,WSCF blue 给我错误(Cannot import wsdl:portType
)。 svcutil.exe
将生成 一些 XSD 文件信息,但出于某种原因不是全部。
所以两个问题:
如何从 XSD 文件生成一些 stub 类来实现这一目标
不使用 wscf blue 从 WSDL 和多个 XSD 文件生成 WCF 服务的教程/演练?
最佳答案
假设您有一个 WSDL 作为开始,您可以执行以下操作。当我的任务是在现有 Web 服务之上实现一个中间调度层时,我就这样做了。新服务应公开与原始服务相同的接口(interface),但在内部执行不同的功能。请注意,我在这里谈论的是“经典”WCF 服务(基于 SOAP)。
第 1 步:从 WSDL 为服务接口(interface)创建代码
wsdl.exe /si /out:<targetfolder> <url-to-wsdl>
这会生成一个 .cs 文件,其中包含接口(interface)和其他数据类型(用于传输对象)。请注意,此文件尚未准备好 WCF,因为 wsdl.exe 似乎假定您要创建旧的 .asmx 服务。
第 2 步:将接口(interface)代码导入您的项目
将生成的文件添加到您的项目中。添加属性以使接口(interface)及其操作为 WCF 准备就绪。您需要将 [ServiceContract] 添加到接口(interface),将 [OperationContract] 添加到操作。
第 3 步:创建 WCF 服务
创建一个 WCF 服务(.svc 文件)并删除生成的接口(interface)。相反,让服务从生成的接口(interface)中实现契约。现在,您可以实现新功能。
第 4 步:调整剩余的绑定(bind)、身份验证设置等以匹配原始网络服务。
关于c# - 启动 Contract First WCF 或 Web 服务的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23000510/