我有一個webmethod無法在第一次嘗試期間觸發存儲過程(我猜想在建立新連接時)。我得到Internal error server
作爲錯誤的Ajax消息。但是,如果我從URL地址返回,那麼存儲過程將被執行,並且頁面正常工作,因爲它們應該如此。然後再次,如果我保持頁面處於非活動狀態一段時間,然後嘗試建立新連接,則會出現同樣的問題。Ajax webmethod無法在第一次嘗試時觸發存儲過程
我花了最近2天試圖通過檢查參數,從webmethod中刪除大部分代碼來識別問題,最後我能夠將問題追溯到此存儲過程。
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
這裏是我如何連接到存儲過程從將WebMethod
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;
我將不勝感激,如果有人可以找出原因,我第一次嘗試運行時遇到此問題存儲過程。謝謝!
當你調試你的服務器端webmethod代碼 - 你有什麼異常嗎? – Igor
我沒有得到任何錯誤.....我能夠捕捉的唯一錯誤是來自Ajax webmethod – Gloria
的「服務器內部錯誤」,這是不可能的。服務器上發生故障。你能夠在webmethod中設置斷點並停止嗎? – Igor