1

我有一个使用 .NET 3.5 (VS2008) 开发的 Web 服务方法,它需要一些字符串(用户名、密码、主题、文件类型)和一个用 Base64 编码的二进制文档。

我启用了 SOAP 和 HTTP POST。虽然 SOAP 运行良好,但无法发送 HTTP POST 请求。服务器响应“服务器无法处理请求。---> 根级别的数据无效。第 1 行,位置 1”。

客户正在使用这种方法从他们的应用程序中上传他们的文档。

有人告诉我 .NET 不支持使用 HTTP POST 的复杂结构。有什么办法支持这个吗?

4

2 回答 2

1

.NET 确实支持使用带有 httpBinding 的 POX(普通旧 xml)的复杂结构。这是一篇解释如何设置它的文章:http: //fluxcapacity.net/2007/11/06/how-to-create-restpox-web-services-with-wcf/

注意:所有 SOAP、XML 和 JSON dto 更新仍然通过 HTTP POST 工作 - SOAP 只是用额外的标记包装您的有效负载,这实际上只是增加了网站(即 Ajax)客户端的额外开销和复杂性。

如果您希望相同的 Web 服务在 SOAP 以及其他端点(例如 XML 或 JSON)上工作,您可能会对这个开源 Web 服务框架感兴趣,它无需任何额外配置即可启用所有这些端点。

于 2010-02-19T13:29:05.323 回答
0

听起来您想从桌面应用程序转移到基于 ASP Web 的应用程序。

虽然这通常是一个好主意,但我认为您将在尝试通过 http/form 将文件发布到您的 Web 服务时进行一场艰苦的战斗。虽然从技术上讲,我可能很难考虑实现。

使用表单作为代理,输入变量和文件输入以提交到表单(例如 webform),并使用 webform 上的代码隐藏来启动 webservice 类的实例(无需使用代理,您已经在您身边)。

如果这没有意义,请告诉我,如果它不能适合您的情况,请更新您的问题以更清楚地说明您想要的结果。

如果您通过 Ajax 执行此操作,请使用 [ScriptService] 属性装饰您的服务类并通过 xmlhttp 发布 JSON。您可以轻松发送复杂的参数。

有关说明,请参阅http://www.codeproject.com/Articles/38999/Consuming-ASP-net-WebServices-WCF-Services-and-sta.aspx

如果不是,请详细说明发布内容以及如何打包数据。

于 2010-02-18T18:57:11.267 回答