2016-07-20 5 views
0

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.

Runtime Error shown

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> 

IIS Setting

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: 
+0

Haben Sie Ihre Ereignisanzeige überprüft? Es sollte dir mehr Details geben. – illinoistim

+0

habe ich nicht. Wo im Event Viewer sollte ich suchen? –

+0

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

Antwort

1

So war hier der Deal. Dank der Kommentare von illinoistim zum Event-Viewer konnte ich den Inhalt für die Suche verwenden.

Offenbar hatte ich versehentlich die Datei web.config aus dem Stammordner in den Anhang Unterordner kopiert. Ich wollte Änderungen an meiner web.config-Datei vornehmen, sodass ich sie in einen temporären Ordner auf meinem Desktop kopierte, für den Fall, dass die Dinge seitwärts gingen. Ich vermute, dass ich, da ich eine programmierbare Maus habe und die Datei immer noch in der Zwischenablage gespeichert war, den Anhangordner ausgewählt haben musste und auf meine "Einfügen" -Schaltfläche an der Maus klicke. Beide .config-Dateien haben das Tag. Dieses Tag ist nur auf Anwendungsebene erlaubt.

+0

Gut zu helfen.Die Ereignisanzeige hilft sehr, insbesondere in einer Produktionsumgebung, in der Sie die benutzerdefinierten Fehler nicht abschalten können. Stellen Sie sicher, dass bei der Erstellung Ihrer Website benutzerdefinierte Fehler auftreten. – illinoistim

Verwandte Themen