Я пытаюсь создать файл index.aspx в каталоге App_Code , который будет принимать вызовы API, выполняемые ajax.

Пример:

Файловая структура в проекте

(Здесь просто есть каталог App_Code с 1 файлом index.aspx под ним. Наконец, есть файл index.html вне этого каталога для домашней страницы.)

index.aspx код спереди

<%@ 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 код позади:

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 код

<!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>

Я заставлял это работать раньше (но не могу вспомнить, как). Я получаю сообщение об ошибке «Подробная ошибка IIS 10.0 - 404.8 - не найдено» в событии ошибки вызова ajax. Обычно он никогда не попадает в метод загрузки страницы файла index.aspx .

0
User10505 1 Янв 2018 в 00:25

2 ответа

Лучший ответ

Из вашего снимка экрана кажется, что тип вашего проекта - это веб-приложение, а не веб-сайт.

Во-первых, не используйте папку App_Code для проектов веб-приложений. Он был предназначен для использования в проектах веб-сайтов для размещения файлов кода, которые не прикреплены к странице (т. Е. Не кода программной части). В проектах веб-приложений вы можете размещать файлы кода в любом месте, поэтому папка App_Code не требуется и не предлагает никаких специальных функций. Вы по-прежнему можете использовать ее, как любую другую папку, но вместо нее рекомендуется использовать папку с лучшим именем.

Поэтому вам следует избегать помещения aspx-страниц в папку App_Code, потому что это сбивает с толку и не имеет смысла в проектах веб-приложений. Используйте для этого папку с лучшим именем. По этой причине я буду воздерживаться от публикации решения, которое заставит его работать, потому что вам вообще не следует этого делать.

Вместо этого переименуйте папку App_Code во что-нибудь значимое, например API, а затем используйте это имя в своем Ajax, например /api.

0
Racil Hilan 31 Дек 2017 в 22:20

Здравствуйте, в вызове ajax попробуйте изменить URL-адрес, например: url: 'App_Code / Index.aspx / Page_Load' Я не уверен, что это ответ, но попробуйте.

0
Karen Nersesian 31 Дек 2017 в 21:43