NetNamedPipeBinding サービスをホストする単純な Windows フォーム アプリを開発しました。同じアプリは、サービス内の関数を呼び出そうとするクライアントですが、次のエラーが発生しました。
net.pipe://service1/ に送信されたこの要求操作は、構成されたタイムアウト (00:01:00) 内に応答を受信しませんでした。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。これは、サービスがまだ操作を処理中であるか、サービスが応答メッセージを送信できなかったことが原因である可能性があります。(チャネル/プロキシを IContextChannel にキャストし、OperationTimeout プロパティを設定することによって) 操作のタイムアウトを増やすことを検討し、サービスがクライアントに接続できることを確認してください。
これは私のサービスです:
namespace WcfServiceExample
{
[ServiceContract]
public interface IService1
{
[OperationContract]
string SayHello();
}
public class Service1 : IService1
{
public string SayHello()
{
return "Hello from " + Dns.GetHostName() + " !!";
}
}
}
これは私の app.config です (私の Windows フォーム アプリ内):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<!-- CLIENT & SERVER BINDINGS -->
<bindings>
<netNamedPipeBinding>
<binding name="NamedPipeBinding">
<security mode="None" />
</binding>
</netNamedPipeBinding>
</bindings>
<!-- SERVER -->
<services>
<service name="WcfServiceExample.Service1" behaviorConfiguration="svc1behavior">
<endpoint address="net.pipe://service1" binding="netNamedPipeBinding" bindingConfiguration="NamedPipeBinding" name="NamedPipedEndPoint" contract="WcfServiceExample.IService1" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="svc1behavior">
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<!-- CLIENT -->
<client>
<endpoint address="net.pipe://service1" binding="netNamedPipeBinding"
bindingConfiguration="NamedPipeBinding" contract="WcfServiceExample.IService1"
name="NamedPipedClientEndPoint" />
</client>
</system.serviceModel>
</configuration>
これが私の Windows フォーム アプリです。
namespace ServiceHostAndClientNamedPipesNoProxy
{
public partial class Form1 : Form
{
ServiceHost vHost;
IService1 sc;
public Form1()
{
InitializeComponent();
StartHostService();
StartClient();
}
private void StartHostService()
{
try
{
// Create the service instance
vHost = new ServiceHost(typeof(Service1));
// Open the service
vHost.Open();
}
catch (Exception ex)
{
vHost.Abort();
}
}
private void StartClient()
{
NetNamedPipeBinding binding = new NetNamedPipeBinding("NamedPipeBinding");
ChannelFactory<IService1> cf = new ChannelFactory<IService1>("NamedPipedClientEndPoint");
sc = cf.CreateChannel();
//((IContextChannel)sc).OperationTimeout = new TimeSpan(0, 3, 0);
textBox1.Text = "Connected to " + cf.Endpoint.Address.ToString();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
vHost.Close();
}
private void btnInvokeMethod_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
textBox2.Text = textBox2.Text + System.Environment.NewLine + sc.SayHello();
this.Cursor = Cursors.Default;
}
}
}
助けてください、私はこれで立ち往生しています!!!.
前もって。