2017-12-31 19 views
0

私は、Ajaxによって実行されるAPIコールにピックアップしますにApp_Codeディレクトリの下にindex.aspxファイルを、持ってしようとしています。ajax呼び出しから(App_Code内の)index.aspxファイルにアクセスしていますか?

例:

File structure in project

(これは、単にその下に1つのindex.aspxファイルとにApp_Codeディレクトリを持っている最後に、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ファイルのページロードメソッドには絶対に入りません。

+2

なぜそれをしますか? App_Codeはページ用ではありません – hardkoded

答えて

0

あなたのスクリーンショットから、プロジェクトタイプはウェブアプリケーションではなくウェブサイトであるようです。

まず、App_CodeフォルダをWebアプリケーションプロジェクトに使用しないでください。これは、ページに添付されていないコードファイル(コードビハインドではない)を配置するためにウェブサイトプロジェクトで使用されることを意図していました。 Webアプリケーションプロジェクトでは、任意の場所にコードファイルを置くことができるので、App_Codeフォルダは必須ではなく、特別な機能はありません。他のフォルダと同じように使用することはできますが、名前のついたフォルダを使用することをお勧めします。

App_Codeフォルダにaspxページを置かないようにする必要があります。なぜなら、Webアプリケーションプロジェクトでは紛らわしくて意味がないからです。それにはより良い名前のフォルダを使用してください。その理由から、私は最初にそれをしてはいけないので、それを動作させるためのソリューションを投稿することを控えます。

代わりにApp_Codeフォルダの名前を、たとえばAPIのように変更し、Ajaxでその名前を/apiのように使用してください。

+0

App_Codeはファイルを保護することができましたが、データベース接続を扱うクラスなどの場合はもっと多いと思います。 – User10505

+0

ファイルの保護とは、ファイルにアクセスできないということです。例、dllファイルとweb.configファイルの保護訪問者にyourdomain.com/web.configと入力して、すべての設定とデータベース接続文字列を確認する必要はありません。しかし、あなたのaspxページ、あなたはアクセス可能にしたい、そうでなければページにアクセスできない場合はWebアプリケーションを持つことのポイントは何ですか?あなたのaspxページだけがメンバーにアクセスできるようにするには、認証を探す必要があります。全く異なるコンセプト。 –

0

こんにちはajaxのようにURLを変更してみてください: url: 'App_Code/Index.aspx/Page_Load' 私はそれが答えかどうかはわかりませんが、試してみてください。

関連する問題