将命名空间保存在c#soapservice中

时间:2018-03-15 16:14:03

标签: c# soap reference namespaces soap-client

我想这是一个愚蠢的问题,但我很难找到类似的东西,所以也许这里有人可以把我推向正确的方向。

问题: 我有一个包含大量请求/响应类的c#SoapService,所以让我们说:

[WebService(Namespace = "http://fuu.bar.gov/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]

public class Main : System.Web.Services.WebService
{
    [SoapHeader("authentication")]
    [WebMethod(Description = "Get Foo")]
    public FooResponse GetFoo(FooRequest request)
    {
         return new FooResponse ();
    }

    [SoapHeader("authentication")]
    [WebMethod(Description = "Get Bar")]
    public BarResponse GetBar(BarRequest request)
    {
         return new FooResponse ();
    }
}

public class FooResponse{};
public class FooRequest{};
public class BarResponse{};
public class BarRequest{};

因此,当我在客户端代码中创建名为“foobarWebservice”的WebReference时,我会得到:

foobarWebservice.FooResponse
foobarWebservice.FooRequest
foobarWebservice.BarResponse
foobarWebservice.BarRequest

类定义。

我想要的是将上述内容改为:

public class Main : System.Web.Services.WebService
{
    [SoapHeader("authentication")]
    [WebMethod(Description = "Get Foo")]
    public Foo.Response GetFoo(Foo.Request request)
    {
         return new FooResponse ();
    }

    [SoapHeader("authentication")]
    [WebMethod(Description = "Get Bar")]
    public Bar.Response GetBar(Bar.Request request)
    {
         return new FooResponse ();
    }
}

这很容易:

namespace Foo
{
    public class Response{}
    public class Request{}
}
namespace Bar
{
    public class Response{};
    public class Request{};
}

但客户端Reference.cs也应该给我这个:

foobarWebservice.Foo.Response
foobarWebservice.Foo.Request
foobarWebservice.Bar.Response
foobarWebservice.Bar.Request

所以我能够做到这一点:

foobarWebservice.Main webservice = new foobarWebservice.Main();
foobarWebservice.Foo.Request newRequest = new foobarWebservice.Foo.Request();
foobarWebservice.Foo.Response response = webservice.GetFoo(newRequest);

简单地说:我希望在客户端应用程序上生成的Reference.cs文件中保留我的命名空间。

1 个答案:

答案 0 :(得分:0)

使用命名空间创建新程序集,并在客户端和服务器项目中使用它。在客户端项目中添加WCF引用时,请检查“使用现有程序集”#39;选项并检查添加的参考项目/程序集。

项目A:普通班级

项目B:WCF服务

项目C:WCF客户端。确保检查重用程序集选项。