2

我有一个非常简单的 WCF 服务,它有一个方法 GetDateTime(),我将它托管在 Windows 7 的 IIS 中,在 Windows 环境中似乎一切正常,我可以使用测试客户端应用程序执行。

在我使用 MonoTouch 的 Mac 上,我添加了对服务的 Web 引用,它会找到服务并生成大量文件。

当我编译 Mono 项目时,生成的 Reference.cs 文件中有一个错误。

接口中的 GetDateTime 方法已声明为返回类型 GetDateTimeResponse 而不是 System.DateTime。

知道出了什么问题,这是一个错误还是我错过了什么?

[System.ServiceModel.ServiceContractAttribute(Namespace="LastPrice.win7pro")]
public interface ITest {

    [System.ServiceModel.XmlSerializerFormatAttribute()]
    [System.ServiceModel.OperationContractAttribute(Action="http://win7pro/ITest/GetDateTime", ReplyAction="http://win7pro/ITest/GetDateTimeResponse")]
    GetDateTimeResponse GetDateTime(GetDateTime GetDateTime);

    [System.ServiceModel.XmlSerializerFormatAttribute()]
    [System.ServiceModel.OperationContractAttribute(Action="http://win7pro/ITest/GetDateTime", ReplyAction="http://win7pro/ITest/GetDateTimeResponse", AsyncPattern=true)]
    System.IAsyncResult BeginGetDateTime(GetDateTime GetDateTime, System.AsyncCallback asyncCallback, object userState);

    GetDateTimeResponse EndGetDateTime(System.IAsyncResult result);
}
4

1 回答 1

1

这是 Mono 的 WSDL 生成中的一个错误。

我为此创建了一个简单的测试用例,使用 Visual Studio 2012 Web Express,它在从 Windows 机器复制 Reference.cs 文件时工作正常。

这现在在mono/master commit aa2e9ec中得到修复。

该错误影响所有具有复杂返回类型的无参数服务方法。

作为临时解决方法,SlSvcUtil.exe请在 Windows 上使用来创建客户端代理或向您的服务方法添加一个虚拟参数。

于 2012-10-01T08:34:32.087 回答