サービスリファレンスを追加せずにWcfサービスメソッドにアクセスする必要がありますか?
手順1:WCFサービスを作成します。
ステップ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;
}
以下のように使用できます。サービス契約参照を必ず追加してください。
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");
ここ から、それに関する完全なトレーニングを得ることができます。
はい、サービス参照を追加せずに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);
お役に立てれば
これでマークダウンリンチの暴徒を危険にさらすが...
reason実行時にURLを選択する必要があるために参照を追加していない場合でも、参照を追加し、必要に応じて次のように変更できます。
MyProxy.Endpoint.Address = new EndpointAddress(MyUri);
(またはインスタンス化するときにコンストラクターで同じことを行います)。
「ティリーナH」の答えをコメントすることには定評はありませんが、コードを使用できます
ServiceContract channel = factory.CreateChannel();
あなたが書いた場合のみ:
var factory = new ChannelFactory<ServiceContract>(binding, address);
代わりに
ChannelFactoryfactory = new ChannelFactory<ServiceContract>(binding, address);
Johnがこれを行ったとき、「ステップ2:アプリケーションにサービス参照を追加します。」 Visual Studioは、アプリケーションのapp.configファイルにエンドポイントとデフォルトのバインディングを追加しました。 URLを指定する必要はありません。 Johnのコードは、サービスが必要な契約を実装している限り、問題なく機能するはずです。