簡體   English   中英

從jQuery AJAX調用.NET函數時出現403禁止錯誤

[英]getting a 403 forbidden error when calling a .NET function from jQuery AJAX

我有這個jQuery代碼,它從表單提交和循環運行,以將一定數量的記錄插入到SQL表中。 代碼的ajax部分在名為Helpers.vbhtml的webmatrix頁面中調用VB函數

function InsertSheeter()
{
    var textDate = $('#textDate').val()
    var Workorder = $('#textWorkorder').val()
    var Material = $('#dropdownMaterial').val()
    var Shift = $('#dropdownShift').val()
    var Sheeter = $('#dropdownSheeter').val()
    var FoilNum1 = $('#textFoilNum1').val()
    var FoilNum2 = $('#textFoilNum2').val()
    var FoilNum3 = $('#textFoilNum3').val()
    var Printline = $('#dropdownPrintline').val()
    var Section = $('#dropdownSection').val()
    var Comments = $('#textComments').val()
    var Employee = $('#dropdownEmployees').val()

    var a = 0

    while (a < Section)
    {


        switch (a) 
        {
        case 0:
            blockSection = "1"
            break;
        case 1:
            blockSection = "2"
            break;
        case 2:
            blockSection = "3"
            break;
        }

    var str = {pDate: textDate, pSheeter: Sheeter, pShift: Shift, 
            pEmployee: Employee, pWorkorder: Workorder, pBlockSection: blockSection, 
                pComments: Comments, pFoilNum1: FoilNum1, pFoilNum2: FoilNum2, 
                pFoilNum3: FoilNum3, pPrintline: Printline, pMaterial: Material}
    $.ajax(
    {
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "Helpers.vbhtml/InsertSheeter",
        data: JSON.stringify(str),    
        dataType: "json",
        success: function(data)
            {
            OpenReports(Workorder, data.d)
            },
        error: function (xhr, errorType, exception) { 
                var errorMessage = exception || xhr.statusText;
                alert(errorMessage);
                }

    });


    a++;
    }


}

這是被調用的VB.NET函數:

我根據我對文檔的理解創建了一個使用App_Code目錄中的vbhtml頁面的webservice。 這是我之前在本文中引用的vb代碼InsertSheeter的片段。

@Imports Microsoft.VisualBasic
@Imports System
@Imports System.Web
@Imports System.Web.Services
@Imports System.Xml.Serialization

@Functions
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> 


 <WebMethod>
Public Shared Function InsertSheeter(ByVal pDate As DateTime, ByVal pSheeter As String, ByVal pShift As String,
                            ByVal pEmployee As String, ByVal pWorkorder As String,
                            ByVal pBlockSection As String, ByVal pComments As String, ByVal pFoilNum1 As String,
                            ByVal pFoilNum2 As String, ByVal pFoilNum3 As String, ByVal pPrintline As String,
                            ByVal pMaterial As String) As String

Dim db As Database
db = Database.Open("Nomex")
Dim strQuery As String

Dim pBlockNumber As String

pBlockNumber = GetBlockNumber(pBlockSection, pWorkorder, pSheeter, pMaterial)

strQuery = "INSERT INTO dbo.NomexSheeter (SheeterDate, Sheeter, Shift, Employee, WorkOrder, BlockNumber, BlockSection, " _
            & "Comments, FoilNum_1, FoilNum_2, FoilNum_3, PrintLine, Material) " _
            & "VALUES (@0, @1, @2, @3, @4, " _
            & "@5, @6, @7, @8, @9, @10, @11, @12)"

db.Execute(strQuery, pDate, pSheeter, pShift, pEmployee, pWorkorder, pBlockNumber, pBlockSection,
                     pComments, pFoilNum1, pFoilNum2, pFoilNum3, pPrintline, pMaterial)

db.Close

Return pBlockNumber 

End Function


End Functions

在調用jQuery函數InsertSheeter()后,我仍然得到404 Forbidden錯誤。 我不明白我做錯了什么。 Webmatrix文檔和在線帖子似乎支持這一想法。

也許您的AJAX請求是通過HTTP進行的,並且您為應用程序設置了“需要SSL”?

也許我錯了,但我認為Helpers並不打算被客戶端調用。

助手在ASP.NET網頁中是存儲為.cshtml文件的組件,旨在通過允許其他ASP.NET網頁使用視圖中熟悉的object.method([args ...])語法來訪問它們,以提高可重用性。

關於幫助者的有用鏈接

您似乎想要的是asmx格式的Web服務,它允許http Post請求以及發送和接收JSON。

鏈接以創建Web服務。 鏈接啟用http Post。 鏈接以啟用JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM