Ich gehostet meine Website mit Windows Server 2012 unter IIS8. Der Code ist in VB.NET geschrieben.ASP.NET Generic Runtime Error beim Öffnen einer PDF in neue Registerkarte - gestoppte Arbeit
Bis gestern, meine Seiten würden PDFs in einem neuen Tab zum Ansehen öffnen (nicht herunterladen), nachdem eine Link-Taste geklickt wurde. Die Verknüpfungsschaltfläche funktioniert nur, wenn die zugehörige Datei in der Datenbank vorhanden ist.
If (myreader(49) = "" And myreader(52).ToString() = "0") Then
lnkAttachment.Text = "N/A"
lnkAttachment.Enabled = False
Else
lnkAttachment.Text = "Click Here"
lnkAttachment.Enabled = True
Sobald die Schaltfläche geklickt wird, öffnet sich die PDF-Datei in einem neuen Tab. Es hat nicht mehr funktioniert und zeigt nun einen generischen Laufzeitfehler.
Der Code, der den Link zu dieser Seite erzeugt ist:
Protected Sub lnkAttachment_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkAttachment.Click
Dim wdwOpen As String = "window.open('" & "../Attachment/" & Session("ID") & ".pdf" & "','_blank');"
Response.Write("<script>")
Response.Write(wdwOpen)
Response.Write("</script>")
End Sub
ich die Datei web.config und IIS Fehler Seite Einstellungen haben soll detaillierte Fehlerinformationen zu zeigen:
<system.web>
<customErrors mode="Off"/>
</system.web>
Ich habe unter dieser IIS-Site mehrere Anwendungen eingerichtet. Der mit dem Problem (WO) ist der einzige, den ich PDFs nicht öffnen kann. Ich habe eine andere Anwendung unter dieser Site, die keine Probleme hat, die PDF-Datei anzuzeigen. Ich möchte sagen, dass dies ein IIS-Problem ist, aber ich kann nicht genau feststellen, was der Fehler ist.
Ich habe in das C gegangen: \ inetpub \ logs \ LogFiles \ W3SVC1 Datei und fand diese Zeile:
2016-07-20 13:29:22 (server ip address) GET /WO/Attachment/40147.pdf - 443 - 192.168.0.2 Mozilla/5.0+(iPhone;+CPU+iPhone+OS+9_3_2+like+Mac+OS+X)+AppleWebKit/601.1.46+(KHTML,+like+Gecko)+Version/9.0+Mobile/13F69+Safari/601.1 - 500 0 0 31
Es zeigt einen 500-Fehler, sondern für das Leben von mir kann ich dieses Problem nicht lösen. Ich habe eine Fülle von Informationen durch Websuchen gefunden, aber ich kann keine zu dem spezifischen Problem finden. Wie funktioniert der Code eines Tages und stoppt dann das nächste und nur für eine Anwendung unter einer Site in IIS.
Irgendwelche Ideen, was kann das Problem sein?
EDIT: Auszug aus der Ereignisanzeige per illinoistim Kommentar:
Event code: 3008
Event message: A configuration error has occurred.
Event time: 7/21/2016 6:55:26 AM
Event time (UTC): 7/21/2016 11:55:26 AM
Event ID: 949451611c784e7695ead3f75ea8d6b5
Event sequence: 125
Event occurrence: 3
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT/WO-15-131135755702094878
Trust level: Full
Application Virtual Path: /WO
Application Path: C:\inetpub\wwwroot\OHAS\WODB\
Machine name: (Machine Name)
Process information:
Process ID: 22580
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Exception information:
Exception type: ConfigurationErrorsException
Exception message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. (C:\inetpub\wwwroot\OHAS\WODB\attachment\web.config line 86)
at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Web.Configuration.RuntimeConfig.GetSectionObject(String sectionName)
at System.Web.Configuration.RuntimeConfig.GetSection(String sectionName, Type type, ResultsIndex index)
at System.Web.Configuration.RuntimeConfig.get_Identity()
at System.Web.HttpContext.SetImpersonationEnabled()
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
Request information:
Request URL: (site URL)
Request path: /WO/attachment/40147.pdf
User host address: 192.168.20.1
User:
Is authenticated: False
Authentication Type:
Thread account name: NT AUTHORITY\NETWORK SERVICE
Thread information:
Thread ID: 57
Thread account name: NT AUTHORITY\NETWORK SERVICE
Is impersonating: False
Stack trace: at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal)
at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
at System.Web.Configuration.RuntimeConfig.GetSectionObject(String sectionName)
at System.Web.Configuration.RuntimeConfig.GetSection(String sectionName, Type type, ResultsIndex index)
at System.Web.Configuration.RuntimeConfig.get_Identity()
at System.Web.HttpContext.SetImpersonationEnabled()
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
Custom event details:
Haben Sie Ihre Ereignisanzeige überprüft? Es sollte dir mehr Details geben. – illinoistim
habe ich nicht. Wo im Event Viewer sollte ich suchen? –
Wählen Sie unter benutzerdefinierten Ansichten Verwaltungsereignisse aus. Versuchen Sie, den Fehler zu duplizieren, und klicken Sie auf das Aktualisierungssymbol auf der rechten Seite. Der letzte Fehler sollte mit einer Erklärung angezeigt werden. – illinoistim