片道wcfメソッドを実装しました。私はこの記事で説明した方法に従ってWebサービスコールを処理しましたarticle私はこのクラスを使ってWebサービスを呼び出します。WCF呼び出しが暗黙的に失敗する場合があります
public delegate void UseServiceDelegate<T>(T proxy);
public static class Service<T>
{
public static ChannelFactory<T> _channelFactory = new ChannelFactory<T>("*");
public static void Use(UseServiceDelegate<T> codeBlock)
{
IClientChannel proxy = (IClientChannel)_channelFactory.CreateChannel();
bool success = false;
try
{
codeBlock((T)proxy);
proxy.Close();
success = true;
}
finally
{
if (!success)
{
proxy.Abort();
}
}
}
}
Service<IOrderService>.Use(orderService=>
{
orderService.PlaceOrder(request);
}
コードを本番環境に移行すると、エラーメッセージを出さずにwcf呼び出しが失敗することがあり、問題なく動作することがあります。私は同じアプリケーションでサービスとクライアントを持っています。
ご迷惑をおかけして申し訳ございません。
マイインタフェース:
[ServiceContract(SessionMode = SessionMode.NotAllowed)]
public interface IOrderService
{
[OperationContract(IsOneWay = true)]
void PlaceOrder(OrderRequest request);
}
それを扱う忘れてしまいました。 – Lamps
このtry catchブロックに書き込んだログはどうなりますか?サイレントエラーの原因を突き止めていませんか? – CSharpenter
例外が全くスローされず、エラーが見つかりませんでした。 : 異なるユーザーからの多数の同時リクエストがある可能性がありますが、そのうちのいくつかは無視されてしまいます。 – Lamps