代理WCF向导
在客户端,我尝试为我的WCF服务创建一个代理 它创造了凉爽。但只有一件小事困扰着我 我想它的问题有和IP地址作为服务名称。但真的有我的机器名。简略地 我有代理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
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地址。但在我按下“配置服务引用…”之后,我遇到了同样的问题。舒尔,我可以在每次更新后进行全局更改。但是闻起来很难闻。。