C# 分析器错误:无法创建类型';xyz';在ASP.NET通用Web处理程序中
我的Web应用程序项目中有一个ASP.NET通用Web处理程序(*.ashx)。它在web服务器上的路径是C# 分析器错误:无法创建类型';xyz';在ASP.NET通用Web处理程序中,c#,asp.net,ashx,C#,Asp.net,Ashx,我的Web应用程序项目中有一个ASP.NET通用Web处理程序(*.ashx)。它在web服务器上的路径是/Services/PayPal/IPNListener.ashx IPNListener.ashx <%@ WebHandler Language="C#" CodeBehind="IPNListener.ashx.cs" Class="Portal.Services.PayPal.IPNListener" %> 由
/Services/PayPal/IPNListener.ashx
IPNListener.ashx
<%@ WebHandler Language="C#"
CodeBehind="IPNListener.ashx.cs"
Class="Portal.Services.PayPal.IPNListener" %>
由于无法创建类型
,产生500内部服务器错误,并且
/PayPal/IPNListener.ashx
很好用。那么,为什么handler one文件夹层次结构的建立会对工作产生影响呢?问题很简单。我有两个IIS7服务器,一个用于本地测试,另一个位于internet上 本地IIS服务器将父目录
/Services
设置为虚拟应用程序。我发现在通用处理程序的路径中的某个地方有一个虚拟应用程序会导致ASP引擎无法创建处理程序类型。这解释了为什么将服务从/PayPal/IPNHandler.ashx
移动到/Services/PayPal/IPNHandler.ashx
会中断,因为前一条路径不是虚拟应用程序,后一条路径会中断处理程序
删除/Services
的虚拟应用程序解决了测试服务器上的问题,现在可以正常工作
无论如何,该路径中不应该有虚拟应用程序,但这是一个疏忽,因为/Services
不仅仅用于此处理程序
事实证明,live server上的问题是处理程序中使用的WCF服务的服务地址使用localhost
别名指向测试服务器,因此是无效地址。live server在虚拟应用程序配置或其他方面没有任何问题,地址不正确
更新不正确的地址解决了500内部服务器错误。这与导致分析错误的处理程序的原始问题无关,但在能够使所有内容正常工作之前,它是第二个问题。如果源代码没有更改,则IIS配置或发布到服务器期间一定有问题。你的部署方法是什么?我有两台服务器要部署。第一个是本地IIS7服务器,我使用
文件系统部署
来部署它。第二个是实时远程服务器(也是IIS7),我使用它FTP Deploy
。两台服务器都会产生相同的问题。发布只是将文件发送到服务器,在发布过程中,除了复制文件外,没有其他特殊操作。我能想到的另一件事是,该服务以前存在于/PayPal/IPNListener.ashx
中,而不是/Services/PayPal/IPNListener.ashx
,但ashx不需要您在Web.config或任何东西中配置任何路径,因此…错误消息基本上是说,在尝试解析ashx文件时,资源/文件/程序集丢失。发布之前,请确保目标服务器为空。另外,我看到您使用了Portal.PayPal,然后您使用了名称空间Portal.Services.PayPal
。请确保您的名称空间没有冲突。Portal.PayPal
是一个单独的程序集,与此通用处理程序无关,我已验证名称空间没有冲突(Portal.PayPal
与Portal.Services.PayPal
没有冲突。消息很清楚,由于某种原因,它无法创建处理程序本身,因此应该排除无法加载某些资源、文件或程序集的可能。我用找到的一些其他信息更新了我的帖子。
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
/Services/PayPal/IPNListener.ashx
/PayPal/IPNListener.ashx