1

我的 Web 应用程序出现以下异常:“通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为它处于故障状态”堆栈跟踪:

" 服务器堆栈跟踪:在 System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout) 在 [0] 处重新引发异常:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 在 System.Runtime。 Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)
at System.ServiceModel.ClientBase1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout) at System.ServiceModel.ClientBase1.Close() 在 System.ServiceModel.ClientBase`1.System.IDisposable.Dispose() 在 System.Web.UI.WebControls.ObjectDataSourceView.ReleaseInstance(Object instance) 在 System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect( DataSourceSelectArguments 参数)在 System.Web.UI.WebControls.ObjectDataSource.Select() 在 BudgeteerWeb.EditTransaction.Page_Load(Object sender, EventArgs e) 在 C:\Develop\Budgeteer\BudgeteerWeb\BudgeteerWeb\MemberPages\Transactions\Edit.aspx。 VB:第 27 行"

我从 ObjectDataSource 使用的选择方法中调用 WCF 服务。如果我不使用基于消息的安全性,一切正常。但是,一旦我使用 ClientCredentials 打开 wsHttpBinding,就会出现上述错误。不知道我错过了什么。

ASP 代码:

后面的代码:objectDataSource select 方法使用的函数:

Protected Function getTransaction(ByVal userID As String, ByVal transactionID As Int64)   
    As BudgeteerService.Transaction

    Dim transaction As BudgeteerService.Transaction = New BudgeteerService.Transaction
    transaction = wcfProxy.GetTransaction(userID, transactionID)

    Return transaction

End Function

Try
    transactionID = Int64.Parse(Request.QueryString("TransactionID"))

    Dim userIdParm As Parameter = New Parameter

    TransactionDataSource.Select() '**EXCEPTION GETS THROWN HERE**
    FormView1.DataSource = TransactionDataSource
    FormView1.DataBind()
Catch timeOutEx As TimeoutException
    Throw timeOutEx
Catch comEx As CommunicationException
    Throw comEx
Catch ex As Exception
    Throw New Exception("An error occured while trying to retrieve this transaction")
End Try

提前致谢。

4

0 回答 0