2017-12-31 44 views
0

Ich versuche, eine index.aspx Datei unter dem App_Code Verzeichnis zu haben, die auf api Anrufe von Ajax ausgeführt abholt.Zugriff auf index.aspx-Datei (in App_Code) von Ajax-Aufruf?

. Beispiel:

File structure in project

(Dies hat einfach ein App_Code Verzeichnis mit 1 index.aspx Datei darunter Schließlich gibt es eine index.html Datei außerhalb dieses Verzeichnisses für die Homepage.)

index.aspx Code Front

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebApplication4.index" runat="server" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Index page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 

    </form> 
</body> 
</html> 

index.aspx Code hinter:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication4 
{ 
    public partial class index : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      String strAPI = Request.Form["api"]; 

      switch(strAPI) 
      { 
       case "test": 
        Response.Write("It worked!"); 
        break; 
      } 

      //lstTest.Items.Add("test"); 
     } 
    } 
} 

index.html Code

<!DOCTYPE html> 

<html> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     window.onload = function() { 
      $.ajax({ 
       url: 'App_Code/', 
       data: 'api=test', 
       dataType: 'text', 
       type: 'POST', 
       contentType: 'application/x-www-form-urlencoded', 
       success: function (data) 
       { 
        debugger; 
       }, 
       error: function (data, status) 
       { 
        debugger; 
       } 
      }); 
     }; 
    </script> 
</head> 

<body> 
    <h2>TEST</h2> 
</body> 

</html> 

ich das bekommen habe arbeite vorher (kann mich aber nicht erinnern, wie). Der Fehler, den ich erhalte, ist 'IIS 10.0 Detailed Error - 404.8 - Not Found' im Fehlerereignis des Ajax-Aufrufs. Im Grunde geht es nie in die Seitenlade-Methode der Datei index.aspx. url:

+2

Warum würden Sie das tun? App_Code es ist nicht für Seiten – hardkoded

Antwort

0

Von Ihrem Screenshot scheint es, dass Ihr Projekttyp Webanwendung ist, keine Website.

Erstens, verwenden Sie nicht den Ordner für Web-Anwendungsprojekte. Es sollte in Webseitenprojekten verwendet werden, um die Code-Dateien, die nicht an eine Seite angehängt sind (d. H. Nicht Code-Behind), zu verwenden. In Webanwendungsprojekten können Sie die Codedateien an einer beliebigen Stelle platzieren, sodass der Ordner nicht benötigt wird und keine speziellen Funktionen bietet. Sie können es trotzdem wie jeden anderen Ordner verwenden, aber es wird empfohlen, stattdessen einen besser benannten Ordner zu verwenden.

Sie sollten also vermeiden, ASPX-Seiten in den Ordner App_Code, weil es verwirrend und macht keinen Sinn in Web-Anwendungsprojekte. Verwenden Sie einen besser benannten Ordner dafür. Aus diesem Grund werde ich davon absehen, eine Lösung zu posten, damit es funktioniert, denn Sie sollten es gar nicht erst machen.

Benennen Sie stattdessen den Ordner in etwas Bedeutungsvolles um, sagen Sie API und verwenden Sie dann diesen Namen in Ihrem Ajax wie /api.

+0

Danke, es war mein Verständnis, dass App_Code Dateien schützt, aber vielleicht ist es mehr für Klassen wie diejenigen, die eine Datenbankverbindung behandeln. – User10505

+0

Dateien schützen bedeutet, dass sie nicht zugänglich sind. Beispiel zum Schutz von DLL-Dateien und der Datei web.config.Sie möchten nicht, dass Ihre Besucher yourdomain.com/web.config eingeben und dann alle Ihre Konfigurationen und die Datenbankverbindungszeichenfolge sehen können. Aber Ihre ASPX-Seiten, Sie wollen sie zugänglich, sonst, was ist der Sinn einer Web-Anwendung, wenn die Seiten nicht zugänglich sind? Wenn Sie möchten, dass Ihre aspx-Seiten nur für Mitglieder zugänglich sind, müssen Sie nach Authentifizierung suchen. Völlig anderes Konzept. –

0

Hallo in Ajax-Aufruf versuchen, die URL wie zu ändern ‚App_Code/Index.aspx/Page_Load‘ Ich bin nicht sicher, ob es die Antwort, aber es versuchen.

Verwandte Themen