我有簡單的Wcf應用程序與客戶端和主機。整個WCF架構是默認的,客戶端邏輯是在添加服務引用後由Visual Studio添加的。應用程序工作很長時間,突然它今天停止工作。在調試期間,我看到問題在於,客戶端無法打開通道。沒有例外,調試器只是不進入下一個執行步驟。主機通常會打開服務。我沒有改變代碼中的任何東西。我嘗試編寫新的Wcf應用程序,並且因爲相同的原因而無法工作。Wcf應用程序無法打開通道
谷歌沒有幫助我。我會很感激任何建議如何解決這個問題。 :)
下面是應用我所提到的部分代碼:
[ServiceContract]
public interface iClientsQueries
{
[OperationContract]
resRegisterUser RegisterUser(reqRegisterUser request);
}
客戶端:
public class ClientLogic
{
User CurrentUser { get; set; }
public ClientLogic(string phoneNumber)
{
client = new iClientsQueriesClient("WSHttpBinding_iClientsQueries");
CurrentUser = new User() { PhoneNumber = phoneNumber, IsRegistered = true };
}
async public void RegisterUser()
{
var req = new reqRegisterUser() { QueryAuthor = CurrentUser };
resRegisterUser res;
try
{
res = client.RegisterUser(req);
notFinished = false;
}
catch (Exception ex)
{
notFinished = true;
}
}
}
主機端:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class HostLogic : iClientsQueries
{
public void StartHostng()
{
Uri hostAddress = new Uri(UriAddress);
try
{
host = new ServiceHost(this, hostAddress);
host.AddServiceEndpoint(typeof(iClientsQueries), new WSHttpBinding(), "TestService");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);
host.Open();
HostOn = true;
}
catch (Exception ex)
{
LogsWriter.WriteExceptionLog(ex);
HostOn = false;
host.Abort();
}
}
public void StopHosting()
{
if (host != null)
host.Close();
HostOn = false;
}
public resRegisterUser RegisterUser(reqRegisterUser request)
{
// LOGIC HERE
}
}
我想到的第一件事情是防火牆關閉了嗎? – Fabjan
@Fabjan,我試過關閉Antyvirus和Firewall。不幸的是,沒有任何改變。 –
看起來像是阻止客戶端打開服務器的通道。但奇怪的是沒有拋出異常。你能提供一個你的代碼的例子嗎? – Fabjan