我花了好几个小时尝试在wsdl生成中进行一些自定义,没有结果.我卡住了主要是因为我找不到一个清楚的样本我想做什么(我可能错过了一些东西).
让我们谈谈:我想自定义生成的WSDL.我发现的最相关的文章是关于向现有服务添加属性以添加行为,如本文所述.
我想要做的是能够分析OperationContract并生成和附加的xsd(如果需要).
我的问题是:
我不想改变svcutil.exe使用元数据的方式,只需在生成的wsdl中添加一些ComplexType'on-the-fly'.
谢谢你的建议!
我有一个带有两个OperationContracts的WCF休息服务,如下所示:
[OperationContract]
[WebGet(UriTemplate = "ping/")]
Message PingServer();
[OperationContract]
[WebGet(UriTemplate = "files/")]
Message AddFile(string accessKey);
Run Code Online (Sandbox Code Playgroud)
当我访问http://localhost/rest.svc/ping/它工作正常,如果我访问http://localhost/rest.svc/files/它工作正常.
但是,如果我直接访问http://localhost/rest.svc,则会抛出以下错误:
System.InvalidOperationException:在对WSDL导出扩展的调用中抛出异常:System.ServiceModel.Description.DataContractSerializerOperationBehavior contract:http://tempuri.org/:IRest ----> System.InvalidOperationException:操作'AddFile'无法加载,因为它具有System.ServiceModel.Channels.Message类型的参数或返回类型或具有MessageContractAttribute的类型和不同类型的其他参数.使用System.ServiceModel.Channels.Message或使用MessageContractAttribute类型时,该方法不得使用任何其他类型的参数.
我理解错误,但想知道如何修复/抑制它,以便它显示默认的WCF端点页面.我只是使用WCF进行REST.
谢谢!
Jeffrey Kevin Pry
我想在我的Web方法中使用松散类型的参数.
我有一个场景,客户端可以将任何25个DataContract对象发送到WCF操作,例如
proxy1.myFunction(PersonObject)
proxy1.myFunction(ComputerObject)
Run Code Online (Sandbox Code Playgroud)
我的限制是应该只有一个操作合同暴露给客户.
如何设计一个可以将25个DataContract类中的任何一个作为参数的Web方法?我尝试使用objectas类型的参数并赋予KnownTypeDataContract类属性,但在序列化过程中我没有运气.
我目前正在开发Windows服务托管的WCF服务.其中一种方法具有URI,该URI设置为接收来自支付提供商的回调.这是接口合同......
[OperationContract]
[WebInvoke(UriTemplate = "3DSecureCallback?TrxId={id}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
void ThreeDSecureCallBack(string id, Stream body);
Run Code Online (Sandbox Code Playgroud)
我遇到的这个问题是第三方提供商发布到我们的服务.我必须提供一个回调网址.因此我们可以协调付款,我们提供带有包含交易ID的查询字符串参数的URL.
在开发此服务期间,回拨已成功.(这是在添加Steam参数之前)
但是,我们现在处于需要解析发布数据的阶段.这是第二个'Stream'参数被添加到方法签名的点.
我得到的问题是我收到以下异常......
For request in operation ThreeDSecureCallBack to be a stream the operation must have a single parameter whose type is Stream.
Run Code Online (Sandbox Code Playgroud)
通过删除id参数,只有流,我们可以获取发布数据.这在实践中不起作用,因为我还需要查询字符串参数.
有人可以建议如何解决这个问题吗?我真的很茫然.
提前致谢,
大卫
是否有可能在WCF中将DbConnection作为OperationConstract的参数发送?因为我得到的数据合同名称的SqlConnection异常"类型System.Data.SqlClient.SqlConnection:HTTP://schemas.datacontract.org/2004/07/System.Data.SqlClient预计不会考虑使用DataContractResolver或添加任何.静态地知道已知类型列表的类型 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中.