2016-03-23 5 views
-1

Ich unterstütze eine alte Classic ASP VBScript-Anwendung. Mein Pech ist, dass ich nicht einmal den Code in meinen Servern debuggen kann. Nach dem Skripting muss ich die Ausgabe direkt auf der Webseite sehen. Der folgende Code lautet Throwing 500 - Interner Serverfehler in der Webseite. Kannst du bitte herausfinden, wo dieser Code falsch gelaufen ist? Danke im Voraus. ich auf die folgenden Links gefolgt sind, während der Code AufbauGetting 500 - Interner Serverfehler beim Ausführen einer gespeicherten Prozedur mit VB Script in der klassischen ASP-Anwendung

http://www.devx.com/tips/Tip/13399

http://stackoverflow.com/questions/36174283/executing-stored-procedure-of-sql-in-vbscript?noredirect=1#comment59989620_36174283

http://forums.asp.net/t/1767387.aspx?how+to+call+a+stored+procedure+with+date+time+parameters+from+a+classic+asp+page

'Set Connection String to Database 
sConnect = "PROVIDER=SQLOLEDB;DATA SOURCE=SCRBNGADK00XXXX;DATABASE=SMART2XXX;UID=XXXX;PWD=XXXX;" 

' Establish connection. 
Set oConObj = CreateObject("ADODB.Connection") 
Set oCmdObj = CreateObject("ADODB.Command") 
Set Rs1 = CreateObject("ADODB.Recordset") 
oConObj.ConnectionString = sConnect 
oConObj.Open 

Set oCmdObj.ActiveConnection = oConObj 
oCmdObj.commandtype=adCmdStoredProc 
oCmdObj.CommandText = "date_diff" 

Set objParm = oCmdObj.CreateParameter("@from", adDBTimeStamp, adParamInput,, R1("LEAVE_FROM")) 
oCmdObj.Parameters.Append objParm 
Set objParm = oCmdObj.CreateParameter("@To", adDBTimeStamp, adParamInput,, R1("LEAVE_TO")) 
oCmdObj.Parameters.Append objParm 
Set objParm = oCmdObj.CreateParameter("@companycode", adVarChar, adParamInput,200, R2("COMPANY_CODE")) 
oCmdObj.Parameters.Append objParm 
Set objParm = oCmdObj.CreateParameter("@locationcode", adVarChar, adParamInput,200, R2("LOCATION_CODE")) 
oCmdObj.Parameters.Append objParm 
Set objParm = oCmdObj.CreateParameter("@hol", adInteger, adParamOutput) 
oCmdObj.Parameters.Append objParm 
set Rs1 = oCmdObj.Execute 
OutPut = oCmdObj.Parameters("@hol") 


If Not IsNull(OutPut) Then 
wscript.echo "Result :" & OutPut 
End If 

Set Rs1 = Nothing 
Set oConObj = Nothing 
Set oCmdObj = Nothing 
+0

Haben Sie den vollständigen Fehler? – Lankymart

+0

Die Webseite wirft einfach 500 Fehler. Ich kann das auf meinen Servern nicht debuggen. Ich versuche nur, den SP auszuführen. – METALHEAD

+0

Auch noch eine Sache..R1 ("LEAVE_FROM") 'hat die Form' 4/18/2016', während '@ from' von' datetime' ist .... wird das durch irgendeinen Fehler ?? – METALHEAD

Antwort

1

Die richtige Antwort darauf ist zu turn on detailed error messages (und dann Ihrem Browser stellen Sie sicher, doesn 't essen verstecken sagte detaillierte Fehlermeldungen im Namen von "Freundlichkeit"). Aber manchmal haben Sie wirklich keine Kontrolle über den Server, und kann nicht dies tun. Bist du komplett verschraubt? Nun, nicht ganz.

Was Sie tun können, ist die Fehlerbehandlung über On Error Resume Next zu deaktivieren, und dann manuell durchlaufen Sie Ihren Code über Response.Write und Response.End.

On Error Resume Next 
'Set Connection String to Database 
sConnect = "PROVIDER=SQLOLEDB;DATA SOURCE=SCRBNGADK00XXXX;DATABASE=SMART2XXX;UID=XXXX;PWD=XXXX;" 

' Establish connection. 
Set oConObj = CreateObject("ADODB.Connection") 
If err.Number <> 0 Then 
    Response.Write "Error creating connection" 
    Response.End 
End If 
Set oCmdObj = CreateObject("ADODB.Command") 
If err.Number <> 0 Then 
    Response.Write "Error creating command object" 
    Response.End 
End If 
Set Rs1 = CreateObject("ADODB.Recordset") 
If err.Number <> 0 Then 
    Response.Write "Error creating recordset object" 
    Response.End 
End If 
'etc., etc., etc. 

In Wirklichkeit würden Sie wahrscheinlich setzen nur die Fehlerprüfungen nach den Zeilen, die Sie vermuten, dass das Problem verursachen, und statt Dutzende von If err.number... Abschnitte hinzuzufügen, können Sie nur einen solchen Abschnitt, die Sie halten nach unten bewegen, bis Sie den Fehler finden.

+1

Die meisten gehosteten Umgebungen verwenden jetzt iis 7.0 oder höher, so dass es kein Problem gibt, sie in 'web.config' zu konfigurieren. Denken Sie daran, dass IIS das 'web.config' nicht Classic ASP liest. Dies ist ein guter Weg für diejenigen, die auf dem Server hosten, ohne auf den Server zuzugreifen, um IIS-Einstellungen zu konfigurieren. – Lankymart

+1

@Martha .... Vielen Dank für Ihre wertvollen Nachrichten .. Ich werde detaillierte Fehlermeldungen einschalten und überprüfen, wo der Code falsch ist .... – METALHEAD