servicestack,Soap,Mono,Wsdl,servicestack" /> servicestack,Soap,Mono,Wsdl,servicestack" />

Soap Servicestack(rest)使用mono的WSDL不正确

Soap Servicestack(rest)使用mono的WSDL不正确,soap,mono,wsdl,servicestack,Soap,Mono,Wsdl,servicestack,我已经用服务堆栈3.9.70编写了一个简单的自托管(在ConsoleApplication中)rest服务 使用系统; 使用System.Runtime.Serialization; //服务栈支持 使用ServiceStack.ServiceHost; 使用ServiceStack.WebHost.Endpoints; 命名空间HelloWorldConsole { 命名空间DTO { [DataContract(命名空间=”http://localhost:8080/types")] [路由

我已经用服务堆栈3.9.70编写了一个简单的自托管(在ConsoleApplication中)rest服务

使用系统;
使用System.Runtime.Serialization;
//服务栈支持
使用ServiceStack.ServiceHost;
使用ServiceStack.WebHost.Endpoints;
命名空间HelloWorldConsole
{
命名空间DTO
{
[DataContract(命名空间=”http://localhost:8080/types")]
[路由(“/hello/{Name}”)]
同学们好:我轮到你们了
{
[数据成员]
公共字符串名称{get;set;}
}
[DataContract(命名空间=”http://localhost:8080/types")]
类Hello响应
{
[数据成员]
公共字符串响应{get;set;}
}
}
HelloService类:iSeries
{
公共对象任意(DTO.Hello请求)
{
返回新的DTO.helloreponse{Response=“Hello”+request.Name};
}
}
公共类HelloHost:AppHostHttpListenerBase
{
公共HelloHost()
:base(“你好,服务自助主机”,
类型(HelloService.Assembly)
{ }
公共覆盖无效配置(Funq.Container)
{
SetConfig(新端点主机配置)
{
DebugMode=true,
WsdlServiceNamespace=”http://localhost:8080/",
WsdlSoapActionNamespace=”http://localhost:8080/",
SoapServiceName=“HelloService”
});
}
}
类主类
{
公共静态void Main(字符串[]args)
{
字符串listenOn=”http://localhost:8080/";
HelloHost=newHelloHost();
Init();
host.Start(listenOn);
Console.WriteLine(“在{1}上的{0}创建的AppHost”,
DateTime.现在,listenOn);
Console.ReadKey();
}
}
}
在Windows下,生成的WSDL很好,如果我尝试创建一个客户机应用程序并在localhost上向soap服务添加一个web引用,我就能够调用Hello。 如果我在Linux下使用Mono运行相同的代码,则生成的WSDL不包含DTO命名空间中定义的类型。如果我尝试在客户机上添加web服务引用,则无法利用hello方法

我已经了解到,默认情况下,相同的ServiceStack控制台应用程序二进制文件在Windows/.NET和Mono/Linux上运行。我尝试在windows下启动二进制文件;服务运行,但生成的WSDL不正确(没有在DTO命名空间中定义类型)。 我使用mono 2.10.8.1

有人有什么建议吗

我还有一个问题。如果使用最新版本Servicestack(4.0.33),则无法利用soap端点

我已经读到,当托管在HttpListener主机上时,SOAP端点不可用。这是新版本4.0引入的功能吗? servicestack版本高于3.9,难道不存在利用soap端点的可能性吗


非常感谢您的帮助。

Mono对WCF/SOAP的支持很弱,而且部分支持,这将无法为许多非平凡的服务定义生成WSDL。由于Microsoft拥有开源的.NET服务器库,这种情况在不久的将来可能会有所改善,但在此期间,如果您想使用SOAP,我建议您避免使用Mono。

非常感谢您的回复,mythz。我的问题是,我必须在Linux下开发一个.net rest web服务,并且必须通过SOAP调用它——您知道是否有一种有效的替代Mono的方法来实现这一点吗?非常感谢你