3

这是我从通用处理程序调用的相关客户端代码:

private static readonly IServiceClient Client = new Soap12ServiceClient("http://localhost/MyService/Send");

_serviceRequest = new ServiceRequest
                                 {
                                     String1 = "string1",
                                     String2 = "string2",
                                     String3 = "string3"
                                 };
Client.Send<ServiceResponse>(_rawMessage);

在服务端,我的 web.config 中有以下内容:

<system.webServer>
  <handlers>
    <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true"/>
  </handlers>
</system.webServer>

并遵循我的 Global.asax.cs:

public class MyServiceAppHost : AppHostBase
    {
        public MyServiceAppHost() : base("My Service", typeof(MyService).Assembly) { }
        public override void Configure(Container container)
        {
            Routes.Add<ServiceRequest>("/Send");
        }
    }

    protected void Application_Start(object sender, EventArgs e)
    {
        new MyServiceAppHost().Init();
    }

最后,MyService 类:

public class MyService : IService<ServiceRequest>
{
    public object Execute(ServiceRequest request)
    {
        return new ServiceResponse
        {
            Response = true
        };
    }

这是我的 POCO 课程:

[DataContract]
public class ServiceRequest
{
    [DataMember(Order = 1)]
    public string String1 { get; set; }

    [DataMember(Order = 2)]
    public string String2 { get; set; }

    [DataMember(Order = 3)]
    public string String3 { get; set; }
}
[DataContract]
public class ServiceResponse
{
    [DataMember(Order = 1)]
    public bool Response { get; set; }
}

我尝试将我的客户端和服务放在同一个 IIS 服务器(不同的应用程序池/网站)以及不同的服务器上。

如果我通过浏览器访问 url http://localhost/MyService/Send,我会在浏览器上得到正确的响应(true),表明服务已启动。但是当我从客户端使用 Soap12ServiceClient 时,我得到“远程服务器返回错误:(404)未找到。”

4

1 回答 1

2

SOAP 不能使用自定义路由,它只支持 HTTP POSTing SOAP 消息到同一个端点。因此,您应该只将其配置为对所有服务使用基本 url。

于 2012-06-20T21:50:14.693 回答