Fehler beim ausführen eine gespeicherte Prozedur in asp.net

Ich bin versucht, führen Sie eine gespeicherte Prozedur in asp.net in der code-behind. Die parameter, die ich versuche zu übergeben ist strErrorMessage, die einen Wert enthält, der "The transport failed to connect to the server.; ".

Die Fehlermeldung, wenn die Abfrage ausgeführt wird: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 1 ("@errMessage"): Data type 0xE7 has an invalid data length or metadata length.

Update mit code

    try
    {
        ...
        ...
        ...
    }
        catch (Exception ex)
        {
            ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email was not sent - " + ex.Message + "');", true);

            string strMessage = ex.Message;
            string strStackTrace = ex.StackTrace;

            strMessage = strMessage.Replace("\r\n", "; ");
            strMessage = strMessage.Replace("   ", "");

            strStackTrace = strStackTrace.Replace("\r\n", "; ");
            strStackTrace = strStackTrace.Replace("   ", "");
            AppErrorLog(strMessage, strStackTrace);
            return false;
        }


    protected void AppErrorLog(string strErrorMessage, string strErrorStackTrace)
    {
        SqlConnection conErrLog = new SqlConnection(strConn);
        string sql = "usp_AppErrorLog_AddRecord";
        SqlCommand cmdErrLog = new SqlCommand(sql, conErrLog);
        conErrLog.Open();
        try
        {
            cmdErrLog.CommandType = CommandType.StoredProcedure;

            cmdErrLog.Parameters.Add(new SqlParameter("@errMessage", SqlDbType.NVarChar, 8000));
            cmdErrLog.Parameters["@errMessage"].Value = strErrorMessage;

            cmdErrLog.Parameters.Add(new SqlParameter("@errStackTrace", SqlDbType.NVarChar, 8000));
            cmdErrLog.Parameters["@errStackTrace"].Value = strErrorStackTrace;

            cmdErrLog.Parameters.Add(new SqlParameter("@userID", SqlDbType.VarChar, 12));
            cmdErrLog.Parameters["@userID"].Value = User.Identity.Name;

            SqlDataAdapter ada = new SqlDataAdapter(cmdErrLog);
            cmdErrLog.ExecuteNonQuery();
        }
        catch(Exception e)
        {
            ClientScript.RegisterStartupScript(GetType(), "alert", "alert('AppErrorLog - " + e.Message + "');", true);
        }
        finally
        {
            conErrLog.Close();
        }
    }

Der Spalte Datentyp in der Tabelle ist vom Datentyp nvarchar(MAX).

Irgendwelche Ideen wie man dies beheben?

  • kannst du uns etwas code zeigen, wie du den Befehl ausführen?
  • seltsame Nachricht. können Sie fügen Sie einige code hier bitte?
  • Können Sie einige Beispiel-code von Ihrem asp-code-hinter, wie Sie definieren und übergeben Sie die Werte der Parameter für gespeicherte Prozeduren?
  • Check this out social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/...
  • Ihre Nachricht parameter ist 48 Zeichen lang sein - jede chance, Ihre gespeicherte Prozedur versucht, legen Sie diesen Wert in einer Spalte mit einer kleineren Anzahl von erlaubten Zeichen?
  • Spalte Datentyp ist vom Datentyp nvarchar(MAX)

InformationsquelleAutor user279521 | 2010-08-17
Schreibe einen Kommentar