C# 是否可以在不添加服务引用的情况下访问WCF服务?
我需要访问Wcf服务方法而不添加服务引用?如何做到这一点 步骤1:创建WCF服务。C# 是否可以在不添加服务引用的情况下访问WCF服务?,c#,asp.net,wcf,C#,Asp.net,Wcf,我需要访问Wcf服务方法而不添加服务引用?如何做到这一点 步骤1:创建WCF服务。 步骤2:将服务引用添加到我的应用程序。 步骤3:将WCF服务方法访问到应用程序中 这样, ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client(); protected void Button1_Click(object sender, EventArgs e) { UserDetails userInfo
步骤2:将服务引用添加到我的应用程序。
步骤3:将WCF服务方法访问到应用程序中 这样,
ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();
protected void Button1_Click(object sender, EventArgs e)
{
UserDetails userInfo = new UserDetails();
userInfo.UserName = TextBoxUserName.Text;
userInfo.Password = TextBoxPassword.Text;
userInfo.Country = TextBoxCountry.Text;
userInfo.Email = TextBoxEmail.Text;
string result = obj.InsertUserDetails(userInfo);
LabelMessage.Text = result;
}
是的,可以作为WCF服务调用,而无需添加服务引用
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:4684/Service1.svc");
ChannelFactory factory = new ChannelFactory<ServiceContract>(binding, address);
ServiceContract channel = factory.CreateChannel();
string resturnmessage = channel.YourMethod("test");
作为第一步,我假设您将服务联系人接口作为一个单独的类库
步骤2:创建WCF服务并将其托管在IIS中
步骤3:在客户端应用程序中引用服务合同库,然后遵循以下代码
ChannelFactory<IYourServiceContract> factory = new ChannelFactory<IYourServiceContract>("EndpointNameOfYourService");
factory.Endpoint.Address = new EndpointAddress("http://example.com/service");
IYourServiceContract client = factory.CreateChannel();
var result = client.YourMethodtoInvoke(serviceArguments);
ChannelFactory=newchannelfactory(“EndpointNameOfYourService”);
factory.Endpoint.Address=新的端点地址(“http://example.com/service");
IYourServiceContract客户端=工厂.CreateChannel();
var result=client.YourMethodtoInvoke(serviceArguments);
希望这对您有所帮助,您可以按如下方式使用。只需确保添加服务合同引用即可
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:4684/Service1.svc");
ChannelFactory factory = new ChannelFactory<ServiceContract>(binding, address);
ServiceContract channel = factory.CreateChannel();
string resturnmessage = channel.YourMethod("test");
BasicHttpBinding=new BasicHttpBinding();
EndpointAddress地址=新的EndpointAddress(“http://localhost:4684/Service1.svc");
ChannelFactory工厂=新的ChannelFactory(绑定,地址);
ServiceContract channel=factory.CreateChannel();
string resturnmessage=channel.YourMethod(“test”);
从这一点上,你可以得到充分的锻炼。冒着被降价林奇暴徒攻击的风险,但是 如果您不添加引用的原因是因为您需要在运行时选择URL,那么您仍然可以添加引用,然后在需要时使用以下方法进行更改:
MyProxy.Endpoint.Address = new EndpointAddress(MyUri);
(或者在实例化时在构造函数中执行相同的操作)。我对“Thilina H”的答案没有评论的名声,但你可以使用代码
ServiceContract channel=factory.CreateChannel();
除非你写下:
var-factory=新的ChannelFactory(绑定,地址);
反而
ChannelFactoryfactory=新的ChannelFactory(绑定,地址);
在约翰做这件事的时候:
“步骤2:将服务引用添加到我的应用程序。”
Visual Studio将端点和默认绑定添加到其应用程序的app.config文件中。他不需要指定URL。只要服务实现了所需的合同,John的代码就可以正常工作。我认为第三行应该是ChannelFactory factory=newchannelfactory(binding,address);使用System.ServiceModel@Thilina H,在.NET4.5中,我在“服务合同”下得到了红色的曲线。我根据第一条评论进行了修复,但仍然出现错误。它说“找不到类型或命名空间‘ServiceContract’”。。。如何正确引用ServiceContract以避免编译错误?在这个项目和/或WCF服务项目中需要做什么?在这里发布了一个新问题,并提供了更多的细节:这是假设两个uri具有相同的“wsdl”。。。比如说,你有QA和PROD服务器。对吗?