我支持Silverlight 4.0应用程序,该应用程序调用WCF服务。当我调试服务,在IIS本地托管时,它使它成为这个方法,但显然离开方法而不从最终返回。我没有看到任何异常被调用。
这是业务类中的方法,它不会返回到调用方法。
public string ExecuteMyPortalNonQuery(string CommandConfig, params object[] commandParams)
{
MyCompany.MyPortal.DataAccess.SQLDataAccess objSQLDatAcces = new SQLDataAccess();
objSQLDatAcces.connection = ConfigurationSettings.AppSettings["MyPortalSQLConnection"];
string SqlQueryString = ConfigurationSettings.AppSettings[CommandConfig];
if (commandParams != null && commandParams.Length > 0)
SqlQueryString = string.Format(SqlQueryString, commandParams);
objSQLDatAcces.executeNonQuery(SqlQueryString);
return ("SUCCESS");
}
修改
这是由操作合同
调用的[OperationContract]
public string UpdateBlahblahList(int Id, int HierarchyId, int PagetypeId, string Name, string Asset, Boolean Default, string ServerName = "", string ServerConnectionString = "")
{
MyCompany.MyPortal.DataAccess.SAPAccess sp = new SAPAccess();
if (Id != 0)
return (sp.ExecuteMyPortalNonQuery("UpdateBlahblahList", Id, Name, Asset, (Default == true) ? 1 : 0, ServerName, ServerConnectionString));
else
return (sp.ExecuteMyPortalNonQuery("InsertBlahblahList", HierarchyId, PagetypeId, Name, Asset, (Default == true) ? 1 : 0, ServerName, ServerConnectionString));
}
也就是说,在调试时,在踩到字符串格式化行SqlQueryString = string.Format(SqlQueryString, commandParams);
永远不会到达objSQLDatAcces.executeNonQuery(SqlQueryString);
行和return ("SUCCESS");
行。
总结一下:
实际效果是数据库无法更新。
调试导致这个吗?我正在调试两个VS 2010实例。
是否可以抛出我未观察到的异常?
修改
感谢西蒙,我知道在哪里观察异常。在客户端的Async完成方法中,Args是最内层的异常消息:“远程服务器返回错误:NotFound。”。
以下是两个参数的值: 更新[dbo]。[BlahblahXref] SET [PageId] ='{1}',[名称] ='{2}',[资产] ='{3}',[默认] ='{4}',[ ServerName] ='{5}',[ServerConnectionString] ='{6}'WHERE Id = {0}
与
commandParams [] = {375,“Test”,“111”,0,“someServerName”,“some long connection string”}
答案 0 :(得分:0)
在托管应用程序的配置文件(Web或控制台,无论如何)中,您可以添加以下行来启用跟踪日志记录:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
<listeners>
<add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="Services.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
然后再次重现您的错误,打开“Services.svclog”,您将能够看到wcf调用的详细信息,包括异常详细信息。