加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Ajax webmethod无法在第一次尝试时触发存储过程

发布时间:2020-12-15 20:55:38 所属栏目:百科 来源:网络整理
导读:我有一个webmethod在第一次尝试期间无法触发存储过程(我想在建立新连接时).我得到内部错误服务器作为错误Ajax消息.但是,如果我从URL地址返回返回,则执行存储过程并且页面可以正常工作,就像它们应该的那样.然后,如果我让页面保持一段时间不活动,然后尝试建立
我有一个webmethod在第一次尝试期间无法触发存储过程(我想在建立新连接时).我得到内部错误服务器作为错误Ajax消息.但是,如果我从URL地址返回返回,则执行存储过程并且页面可以正常工作,就像它们应该的那样.然后,如果我让页面保持一段时间不活动,然后尝试建立新连接,则会出现同样的问题.

我花了最近2天试图通过检查参数来识别问题,从web方法中删除大部分代码,最后我能够将问题跟踪到这个存储过程.

CREATE PROCEDURE [dbo].[spUnionServices]
@freetext NVARCHAR(50),@offset int,@fetch int

AS SET NOCOUNT ON;

BEGIN
SELECT IDphoto AS IDservice,photos.IDuser,photoCaption AS serviceTitle,photoDate as serviceDate,photoFileName AS servicePhoto,'Photo' AS service,photoPublished as servicePublished,inap,hashtags,KEY_TBL.RANK,screenName AS IDname
    FROM photos INNER JOIN FREETEXTTABLE(photos,(photoCaption),@freetext) AS KEY_TBL ON photos.IDphoto = KEY_TBL.[KEY]
    INNER JOIN editorDetail ON editorDetail.IDuser = photos.IDuser
    ORDER BY RANK DESC OFFSET @offset ROWS FETCH NEXT @fetch ROWS ONLY  
END

这是我如何从web方法连接到存储过程

StringBuilder SBsmallSquares = new StringBuilder();
SqlConnection sqlConnection1 = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
           using (sqlConnection1)
           {
               SqlCommand cmd = new SqlCommand();
               SqlDataReader ReaderPopup;
               cmd.CommandText = "spUnionServices";
               cmd.CommandType = CommandType.StoredProcedure;
               cmd.Connection = sqlConnection1;
               cmd.Parameters.AddWithValue("@offset",offset);
               cmd.Parameters.AddWithValue("@fetch",fetch);
               cmd.Parameters.AddWithValue("@freetext",fts);

               sqlConnection1.Open();
               ReaderPopup = cmd.ExecuteReader();
               if (ReaderPopup.HasRows)
               {
                   while (ReaderPopup.Read())
                   {
                   //creating the string to return. Here there is no problem.
                   }
                   return SBsmallSquares.ToString();
               }
            else return string.Empty;

如果有人能够在第一次尝试运行存储过程时发现我遇到此问题,我将不胜感激.谢谢!

解决方法

您应该重试此错误.在可用性事件(例如,升级)期间,DB可以移动到不同的机器,并且fdhost需要再次与SQL实例配对.通常,配对过程发生在第一个自由文本查询或需要时.您可能第一次看到该过程中的超时.它应该帮助你重试.如果这是非常一致的,那么服务中可能存在错误并让我们知道.我会帮你进一步调试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读