웹 응용 프로그램 프로젝트에 ASP.NET 일반 웹 처리기 (* .ashx)가 있습니다. 웹 서버의 경로는 /Services/PayPal/IPNListener.ashx
입니다.파서 오류 : ASP.NET 일반 웹 처리기에서 'xyz'형식을 만들지 못했습니다.
IPNListener.ashx
<%@ WebHandler Language="C#"
CodeBehind="IPNListener.ashx.cs"
Class="Portal.Services.PayPal.IPNListener" %>
IPNListener.ashx.cs
//-----------------------------------------------------------------------------
// <copyright file="IPNListener.cs" company="DCOM Productions">
// Copyright (c) DCOM Productions. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Web;
using Portal.PayPal;
namespace Portal.Services.PayPal
{
/// <summary>
/// Summary description for IPNListener
/// </summary>
public class IPNListener : IHttpHandler
{
/// <summary>
/// Receives the HttpWebRequest via an HttpContext and processes the request
/// </summary>
public void ProcessRequest(HttpContext context) {
// I gutted this, because it still produces the same error
context.Response.Write("Hello World!");
}
/// <summary>
/// Gets a System.Boolean value that indicates whether the generic handler may be reused
/// </summary>
public bool IsReusable {
get {
return false;
}
}
}
}
내가 핸들러로 이동하려고
, 나는 다음과 같은 오류가 발생합니다. 여기Parser Error
Description: An error occurred during the parsing of a resource required to service
this request. Please review the following specific parse error details
and modify your source file appropriately.
Source Error
Line 1: <%@ WebHandler Language="C#"
CodeBehind="IPNListener.ashx.cs"
Class="Portal.Services.PayPal.IPNListener" %>
Source File: /portal/services/paypal/ipnlistener.ashx Line: 1
내가 지금까지 무엇을했는지 있습니다 :
(1) 핸들러 독차지했다. 내 코드에서 오류의 가능성을 제거하기 위해 게시 된 코드에서 볼 수 있듯이 간단한 Hello World
처리기로 처리했습니다. 핸들러는 이전에 잘 작동했지만, 실제로 작동을 멈추게 한 원인이 무엇인지 잘 모릅니다.
(2) 체크 된 버전 제어. 이전에 말했듯이, 핸들러는 하루 전 정도 잘 작동했습니다. 파일의 기록에 대한 버전 제어를 확인하여 변경된 사항이 있는지 확인했습니다.
(3) 응용 프로그램 풀. IIS 7에서 응용 프로그램 풀을 확인하고 실행해야하는 것처럼 ASP.NET v4.0
을 실행 중입니다.
(4) 확인 된 빌드 작업. IPNListener.ashx
의 빌드 동작이 Content
으로 설정되었고 IPNListener.ashx.cs
의 빌드 동작이 Compile
으로 설정되어 있는지 확인했습니다.
(5) 확인 된 DLL 무결성. 컴파일 된 DLL 파일에 Portal.Services.PayPal.IPNListener
유형이 있다는 것을 IL 디스어셈블러를 사용하여 확인했습니다.
(6) 가상 응용 프로그램 디렉터리. /Services/PayPal
폴더는 가상 응용 프로그램이 아니기 때문에 Generic Handler가 작동하도록 만들 필요가 없었지만 어쨌든 시도했지만 동일한 오류가 여전히 발생했습니다.
(7) 깨끗한 재구성. 솔루션을 청소 한 다음 다시 작성하려고했습니다. 컴파일러 오류가 없습니다. 그런 다음 웹 응용 프로그램을 게시하면 모든 것이 정상입니다.
(8) 확인 된 종속성. 필자는 필요한 모든 파일과 종속물이 배포되었는지 확인했습니다. 모든 것이 체크 아웃됩니다.
나는 왜 이것이 작동을 멈추었는지 전혀 알지 못합니다. 모든 것이 테스트를 마쳤으며 첫 번째 소프트웨어 제품에 대한 모든 내용을 게시 할 준비가되었습니다. 지불 서비스에 대한 마지막 테스트를 한 경우 500 내부 서버 오류가 반환되었습니다.이 오류로 인해 추가 조사를 통해 이 문제.
저는 실제로 정말 엉망입니다. 나는 ASHX 핸들러와 이슈에 관한 다른 모든 글들을 StackOverflow에서 검색했다. 여기에는 웹 전체가 포함되어 있었고 여기서 나의 특별한 문제에 도움이되지 않았다.
내가 간과하고있는 것이 정말 간단 할 수도 있지만, 내 손가락을 넣을 수는 없습니다.
(업데이트) 5/29/2012 10:57 PM. Ray Cheng
님의 댓글 및 광산에서 벗어나 서비스가 /PayPal/IPNListener.ashx
에 살고 있으며 /Services/PayPal/IPNListner.ashx
으로 옮겨 졌음을 알았습니다. 이동이 끝나면 모든 네임 스페이스와 클래스 위치가 ASHX 파일에서 업데이트되었습니다.
호기심에서 벗어난 곳에서 핸들러를 /PayPal/IPNListener.ashx
으로 복사하고 ASHX 파일의 네임 스페이스와 클래스를 업데이트 한 다음 위치로 이동하면 서비스가 정상적으로 작동합니다.
/Services/PayPal/IPNListener.ashx
는 Could not create type
로 인해 500 내부 서버 오류를 생산하고
/PayPal/IPNListener.ashx
작품 잘. 그렇다면 왜 핸들러를 하나의 폴더 계층 구조로 만드는 것이 효과가 있습니까?
소스가 변경되지 않으면 IIS 구성시 또는 서버에 게시하는 동안 잘못된 것이 틀림 없습니다. 배포 방법은 무엇입니까? –
배포 할 서버가 2 대 있습니다. 첫 번째는'File System Deploy'를 사용하는 로컬 IIS7 서버입니다. 두 번째는'FTP Deploy'를 사용하는 라이브 원격 서버 (또한 IIS7)입니다. 두 서버 모두 똑같은 문제가 발생합니다. 퍼블리싱은 파일을 서버로 가져오고 파일을 복사하는 것 이외에는 퍼블리싱 중에 특별한 작업을 수행하지 않습니다. 내가 생각할 수있는 유일한 또 다른 점은 이전에'/ Services/PayPal/IPNListener.ashx' 대신에'/ PayPal/IPNListener.ashx'에 있던 서비스 였지만 ASHX에서는 웹상의 어떤 경로라도 설정해야한다는 것입니다. config 또는 뭐니 뭐니해도 ... –
ashx 파일을 구문 분석 할 때 기본적으로 리소스/파일/어셈블리가 없다는 오류 메시지가 누락되었습니다. 게시하기 전에 대상 서버가 비어 있는지 확인하십시오.또한, 나는 당신이'Portal.PayPal'을 사용하고'네임 스페이스 Portal.Services.PayPal '을 가지고있는 것을 보았습니다. 네임 스페이스가 충돌하지 않는지 확인하십시오. –