C# “服务引用”客户端中的WCF在异常消息中提供的信息少于“web引用”客户端
我应该在我的C应用程序中调用web服务。 当我在Visual Studio中添加服务引用以使用该服务时,在异常情况下,我会收到以下消息: SOAP消息传递需要HTTP内容类型头,无 被发现了 但是,当我添加一个web引用时,消息更丰富,更容易理解问题。此消息的最后一部分是服务生成的业务错误消息。为该服务提供的身份验证令牌参数无效,因此返回此错误消息: 客户端找到的响应内容类型为,但应为“text/xml” 请求失败,出现错误消息: - WEB服务错误:未经验证的\u访问 我更倾向于使用服务参考方法,但现在我有点怀疑。C# “服务引用”客户端中的WCF在异常消息中提供的信息少于“web引用”客户端,c#,web-services,wcf,service-reference,web-reference,C#,Web Services,Wcf,Service Reference,Web Reference,我应该在我的C应用程序中调用web服务。 当我在Visual Studio中添加服务引用以使用该服务时,在异常情况下,我会收到以下消息: SOAP消息传递需要HTTP内容类型头,无 被发现了 但是,当我添加一个web引用时,消息更丰富,更容易理解问题。此消息的最后一部分是服务生成的业务错误消息。为该服务提供的身份验证令牌参数无效,因此返回此错误消息: 客户端找到的响应内容类型为,但应为“text/xml” 请求失败,出现错误消息: - WEB服务错误:未经验证的\u访问 我更倾向于使用服务参考方
有没有办法改进这种异常或使用服务引用记录原始响应?我认为第一条消息要清楚得多 它准确地告诉您问题所在,即服务响应中缺少HTTP内容类型头。虽然此标头不是强制性的,但HTTP规范规定您应该从以下位置使用它: 任何包含实体正文的HTTP/1.1消息都应该包含 内容类型标题字段定义该正文的媒体类型 显然,微软在其代理生成工具中内置了一个假设,即该头文件将始终存在
不,您不应该使用WebReference。它来自.net 1.1第二条消息不清楚,它告诉您头是空的,但很可能是丢失的,并且实际上报告了一个身份验证错误,这只是弄脏了水。谢谢@tom。我部分同意您的意见,但我无法更改服务,它的响应包含一条有用的消息:WEB服务错误:未经验证的访问。@morteza这不是一条有用的消息。问题不在于身份验证。问题是该服务不符合w3指南。我明白了。这听起来是个误会。此消息是由服务生成的业务错误消息。为该服务提供的身份验证令牌参数无效,因此返回此错误消息。@Morteza您应该将此信息添加到您的问题中,因为它是相关的