我需要访问Wcf服务方法而不添加服务引用?怎么做?
第1步:创建WCF服务 第2步:向我的应用程序添加服务引用 第3步:将WCF服务方法访问到app。
像这样,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;
}
答案 0 :(得分:21)
您可以使用如下。只需确保添加服务合同参考。
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");
从here开始,你可以完全锻炼身体。
答案 1 :(得分:3)
是的,可以在不添加服务引用的情况下调用WCF服务。
作为第一步,我假设您将服务联系人界面作为单独的类库。
步骤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);
希望这有帮助
答案 2 :(得分:2)
用这种方式冒着降价的暴徒,但是......
如果原因您没有添加引用是因为您需要在运行时选择URL,您仍然可以添加引用,然后在需要时更改它:
MyProxy.Endpoint.Address = new EndpointAddress(MyUri);
(或者在实例化时在构造函数中执行相同的操作)。
答案 3 :(得分:0)
我没有评论“Thilina H”的答案,但你可以使用代码
ServiceContract channel = factory.CreateChannel();
只有你写了:
var factory = new ChannelFactory<ServiceContract>(binding, address);
代替
ChannelFactoryfactory = new ChannelFactory<ServiceContract>(binding, address);
答案 4 :(得分:0)
当约翰这样做时: &#34;步骤2:向我的应用程序添加服务引用。&#34; Visual Studio将端点和默认绑定添加到其应用程序的app.config文件中。他不需要指定URL。只要服务已经实现了所需的合同,John的代码就可以正常工作。