我的WCF服务的调用堆栈操作被调用,但没有完成
我支持一个Silverlight 4.0的应用程序,这使得一个WCF服务的调用。当我调试服务,在IIS上本地托管时,它使它成为此方法,但显然使方法不会从最终返回。我没有看到任何异常被调用。我的WCF服务的调用堆栈操作被调用,但没有完成
这是一个商业类,它差一点就返回到调用方法的方法。
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));
}
也就是说,在调试时,我发现自己在正确的UpdateBlahblahCompleted方法调用客户端跨过后叫字符串格式化线,SqlQueryString = string.Format(SqlQueryString, commandParams);
线条永远不会到达0和return ("SUCCESS");
。
综上所述:
- 客户端调用UpdateBlahblahListAsync
- 在达到[OperationContract的] UpdateBlahblahList UpdateBlahblahList调用ExecuteMyPortalNonQuery但没有完成
- 客户端与client_UpdateBlahblahListCompleted重新进入
- 服务方法的服务|
的净效应是数据库没有更新。
正在调试造成这种情况吗?我与2010年
VS的两个实例调试可以抛出异常,我还没有发现?
编辑
感谢Simon,我知道在哪里可以看到异常。在客户端的异步完成方法中,参数是最内层的异常消息:“远程服务器返回错误:NotFound。”。
这里是两个参数的值: UPDATE [dbo]。[BlahblahXref] SET [PageId] ='{1}',[Name] ='{2}',[Asset] ='{3 }”,[默认] = '{4}',[服务器] = '{5}',[ServerConnectionString] = '{6}' 其中id = {0}
与
commandParams [] = {375,“测试”,“111”,0,“someServerName”,“一些长期连接字符串”}
在你的托管应用程序(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调用的详细信息,包括异常详细信息。
client_UpdateBlahblahListCompleted args中是否有错误? – 2011-05-24 18:48:39
这就是我应该看的地方。是。 ** System.Reflection.TargetInvocationException **和内部异常** ** System.Net.WebException:远程服务器返回一个错误:NotFound。 at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse ** – Blanthor 2011-05-24 18:59:15
在服务器上发生了一些异常,您在客户端看到的主要是它的后果。尝试在服务器端启用跟踪 - http://msdn.microsoft.com/en-us/library/ms733025.aspx - 和/或使用网络跟踪工具(如Fiddler)查看服务器对客户端的响应。有了这些信息,我们可以帮助您更多。 – carlosfigueira 2011-05-24 19:26:16