6

我正在使用非常出色的 servicestack 库,并尝试在我的 servicestack WSDL - Soap11 的 VS2010 中生成 ASP.NET Web 服务引用(旧样式不是 WCF)。很好地包装服务 WSDL。

DTO 位于 AppHost/services 的单独程序集/命名空间 (My.WS.DTO) 中,并且遵循请求/响应命名约定。当我尝试通过 Visual Studio 生成引用时,我在 VS 中收到以下错误。

自定义工具错误:无法导入 WebService/Schema。无法从命名空间“http://schemas.servicestack.net/types”导入绑定“BasicHttpBinding_ISyncReply”。无法导入操作“GetMyDetails”。缺少元素“http://schemas.servicestack.net/types:GetMyDetails”。

注意:GetMyDetails 只是出现在列表中的第一个服务 - 所以我不认为这是问题所在。

我尝试使用 EndpointHostConfig.Instance.WsdlServiceNamespace = "My.WS.DTO"; 在 AppHost 文件中添加程序集命名空间 这只会导致相同的生成错误(如上),但使用“My.WS.DTO”而不是“http://schemas.servicestack.net/types”。

我认为这可能是某种引用问题,但任何关于我可能做错的指导都会很棒。干杯

4

3 回答 3

3

我不知道这对您来说是否仍然是一个问题,但我遇到了类似的问题,发现我没有使用[DataContract][DataMember]属性装饰我的一个 DTO,如SOAP 支持 wiki 页面中所述。将这些添加到 DTO 后,它将在 WSDL 的类型部分中声明。

于 2013-03-21T08:57:23.480 回答
1

看看在[DataContract (Namespace = "YOUR NAMESPACE")]您的 DTO 之上使用。这就是我的对象被引用的方式。

[DataContract(Namespace = "My.WS.DTO")]
public class Account{
}

我也在我的服务模型中使用它。[System.ServiceModel.ServiceContract()] 和 [System.ServiceModel.OperationContract()]

[System.ServiceModel.ServiceContract()]
public class SendGetAccountResponseService : IService<SendGetAccountNotification>
{
#region IService implementation
[System.ServiceModel.OperationContract()]
public object Execute (SendGetAccountNotification request)
{
    Console.WriteLine ("Reached");
    return null;
}
#endregion
}

希望这有助于/解决您的问题。

于 2013-05-13T00:36:40.097 回答
1

我知道这是一个老问题,但我必须为最近拒绝支持 REST 的第 3 方添加 SOAP 支持到我的 ServiceStack 实现中,这样它仍然可能与其他仍然有这个问题的人相关。

我遇到了同样的问题:

无法导入绑定“BasicHttpBinding_ISyncReply”...

就像 mickfold 之前回答的那样,我需要将[DataContract][DataMember]添加到我的类定义及其属性中。

但我还必须在错误消失之前将以下内容添加到我的 AssemblyInfo.cs 文件中:

[assembly: ContractNamespace("http://schemas.servicestack.net/types", ClrNamespace = "My Type Namespace")]

我假设对于声明了类型的每个命名空间,您都需要这些行之一,根据上面的原始问题将是My.WS.DTO

于 2015-07-14T17:28:36.647 回答