代理WCF向导

代理WCF向导,wcf,proxy,client,generator,Wcf,Proxy,Client,Generator,在客户端,我尝试为我的WCF服务创建一个代理 它创造了凉爽。但只有一件小事困扰着我 我想它的问题有和IP地址作为服务名称。但真的有我的机器名。简略地 我有http://mycomputer/blabla在生成后的各个站点中 但我需要这样:http://93.48.56.74/blabla其中93.48.56.74是生成此文件的计算机的IP地址 如何解决这个问题?之所以使用您的机器名,是因为它是在生成的WSDL中公布的地址。如前所述,您可以修改Web.config或App.config,它将使用I

在客户端,我尝试为我的WCF服务创建一个代理

它创造了凉爽。但只有一件小事困扰着我

我想它的问题有和IP地址作为服务名称。但真的有我的机器名。简略地

我有
http://mycomputer/blabla
在生成后的各个站点中

但我需要这样:
http://93.48.56.74/blabla
其中
93.48.56.74
是生成此文件的计算机的IP地址


如何解决这个问题?

之所以使用您的机器名,是因为它是在生成的WSDL中公布的地址。如前所述,您可以修改Web.config或App.config,它将使用IP地址

简单的答案就到此为止:) 或者,您可以更改WSDL。如果您使用的是.NET 4.0*,则可以应用 您的服务配置的行为

添加行为后,服务元数据将公布用于检索WSDL的相同端点地址。因此,如果向添加服务引用,则生成的代理和配置应使用IP地址而不是主机名


*:还有一个适用于.NET 3.5的修补程序:(不要介意修补程序的描述)

它之所以使用您的机器名,是因为它是在生成的WSDL中公布的地址。如前所述,您可以修改Web.config或App.config,它将使用IP地址

简单的答案就到此为止:) 或者,您可以更改WSDL。如果您使用的是.NET 4.0*,则可以应用 您的服务配置的行为

添加行为后,服务元数据将公布用于检索WSDL的相同端点地址。因此,如果向添加服务引用,则生成的代理和配置应使用IP地址而不是主机名


*:还有一个适用于.NET 3.5的修补程序:(不要介意修补程序的描述)

通常的方法是使用配置文件配置客户端,并指定服务器名称或ip地址,以满足您的需要

但从我可以告诉你的是,你正在重新设计服务,要求定期重新配置/更新客户端,在这种情况下,你的手动更改将被覆盖

在这种情况下,您有两种方法:

  • 您可以通过编程方式初始化客户端并设置参数(包括服务url)
  • 您可以选择覆盖主机文件中的服务器名称,以将其指向所需的ip地址
最正确的方法是以编程方式进行初始化。具体取决于您的实现,但下面是一个使用服务
EchoService
的示例。它可能被简化;我已经从需要运行主机的测试初始化中进行了复制和粘贴

    public void SetUp()
    {
        // the service address
        var baseAddress = new Uri("http://127.0.0.1:3123/");

        host = new WebServiceHost(typeof(EchoService), baseAddress);

        ServiceEndpoint sep = host.AddServiceEndpoint(typeof(IEchoService), new WebHttpBinding(), "");
        sep.Behaviors.Add(new WebHttpBehavior());

        echoFactory = new ChannelFactory<IEchoService>(new WebHttpBinding(), sep.Address);
        echoFactory.Endpoint.Behaviors.Add(new WebHttpBehavior());

        client = echoFactory.CreateChannel(sep.Address, baseAddress);
    }
公共作废设置()
{
//服务地址
var baseAddress=新Uri(“http://127.0.0.1:3123/");
主机=新的WebServiceHost(类型(EchoService),基地址);
ServiceEndpoint sep=host.AddServiceEndpoint(typeof(IEchoService),新的WebHttpBinding(),“”);
添加(新的WebHttpBehavior());
echoFactory=新的ChannelFactory(新的WebHttpBinding(),sep.Address);
添加(新的WebHttpBehavior());
client=echoFactory.CreateChannel(sep.Address,baseAddress);
}

常规方法是使用配置文件配置客户端,并根据需要指定服务器名称或ip地址

但从我可以告诉你的是,你正在重新设计服务,要求定期重新配置/更新客户端,在这种情况下,你的手动更改将被覆盖

在这种情况下,您有两种方法:

  • 您可以通过编程方式初始化客户端并设置参数(包括服务url)
  • 您可以选择覆盖主机文件中的服务器名称,以将其指向所需的ip地址
最正确的方法是以编程方式进行初始化。具体取决于您的实现,但下面是一个使用服务
EchoService
的示例。它可能被简化;我已经从需要运行主机的测试初始化中进行了复制和粘贴

    public void SetUp()
    {
        // the service address
        var baseAddress = new Uri("http://127.0.0.1:3123/");

        host = new WebServiceHost(typeof(EchoService), baseAddress);

        ServiceEndpoint sep = host.AddServiceEndpoint(typeof(IEchoService), new WebHttpBinding(), "");
        sep.Behaviors.Add(new WebHttpBehavior());

        echoFactory = new ChannelFactory<IEchoService>(new WebHttpBinding(), sep.Address);
        echoFactory.Endpoint.Behaviors.Add(new WebHttpBehavior());

        client = echoFactory.CreateChannel(sep.Address, baseAddress);
    }
公共作废设置()
{
//服务地址
var baseAddress=新Uri(“http://127.0.0.1:3123/");
主机=新的WebServiceHost(类型(EchoService),基地址);
ServiceEndpoint sep=host.AddServiceEndpoint(typeof(IEchoService),新的WebHttpBinding(),“”);
添加(新的WebHttpBehavior());
echoFactory=新的ChannelFactory(新的WebHttpBinding(),sep.Address);
添加(新的WebHttpBehavior());
client=echoFactory.CreateChannel(sep.Address,baseAddress);
}

在配置文件中搜索“mycomputer”,并替换为ip地址。在服务器端或客户端?我在配置文件中的任何地方都将我的计算机名更改为ip地址。但在我按下“配置服务引用…”之后,我遇到了同样的问题。舒尔,我可以在每次更新后进行全局更改。但它闻起来很难闻..在配置文件中搜索“mycomputer”并替换为ip地址。在服务器端或客户端?我在配置文件中的任何地方都将我的计算机名更改为ip地址。但在我按下“配置服务引用…”之后,我遇到了同样的问题。舒尔,我可以在每次更新后进行全局更改。但是闻起来很难闻。。