我从一家正在测试条形码制作的供应商那里得到了一个要安装在IIS上的示例应用程序。
aspx页面运行良好,但当aspx页面调用ashx页面时,我会得到以下错误:
"/BarcodeSample"应用程序中的服务器错误
分析器错误描述:在分析服务此请求所需的资源。请查看以下内容特定的解析错误详细信息并修改源文件适当地。
分析器错误消息:无法创建类型'TECIT.OnlineBarcodes.BarcodeHandler'.
来源错误:
第1行:<%@WebHandler语言="C#"CodeBehind="BarcodeHandler.ashx.cs"Class="TECIT.OnlineBarcodes.BarcodeHandler"%>
源文件:/BarcodeSample/BarcodeHandler.ashx行:1
--------------------------------------------------------------------------------版本信息:Microsoft.NET Framework版本:2.0.50727.3634;ASP.NET版本:2.0.50727.3634
为什么会发生这种情况?如何使这个ashx文件工作?
检查从命名空间开始的类的全名(如果使用)。我遇到了同样的问题,在更改类名后得到了修复,如下所示:
<%@ WebHandler Language="C#" Class="Namespace.ClassName" %>
而不是这个:
<%@ WebHandler Language="C#" Class="ClassName" %>
我发现一个简单的解决方法有效:
- 将.ashx.cs代码放在.ashx文件的第一行之后
- 删除.ashx文件第一行的CodeBehind属性
- 删除代码隐藏文件
在标签下方添加
<%@ Assembly Name="YourNameSpace.YourHandlerClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=90e3045b123af1c3" %>
在您的WebHandler标签之上
<%@ WebHandler Language="C#" CodeBehind="BarcodeHandler.ashx.cs" Class="TECIT.OnlineBarcodes.BarcodeHandler" %>
我对名称空间的命名有问题,所以我不得不编辑example.ashx
文件(而不是example.ashx.cs
)并在那里更改名称空间名称。
我通过解决方案资源管理器重命名了我的处理程序。
VS2017建议只在.cs文件中更改名称,并使ashx文件中的class属性不正确。
在Visual Studio中,单击解决方案资源管理器中的通用处理程序,然后按F4键选择";属性";。确保您的构建操作是";编译";,不仅仅是";内容";。