【问题标题】:Could not create type with CodeBehind无法使用 CodeBehind 创建类型
【发布时间】:2015-02-25 18:55:32
【问题描述】:

我有一个在 IIS 6 中工作但在 IIS 7 中不工作的 Web 服务。为了测试 Web 服务是否工作,我在我的 ASMX 文件中创建了一个简单的 Web 服务,如下所示:

<%@ WebService Language='c#' Class="DEMOAddNumbers" %>
using System;
using System.Web.Services;
public class DEMOAddNumbers : WebService
{
    [WebMethod]
    public int AddThis(int x, int y)
    {
        int mySum;
        mySum = x + y;
        return mySum;
    }
}

这个网络服务可以工作,但是当我使用 CodeBehind 并将代码放在 DEMOAddNumbers.CS 文件中时,它说,

无法创建类型“DEMOAddNumbers”

我尝试过多种方式来引用DEMOAddNumbers.cs,比如:

<%@ WebService Language='c#' Class="DEMOAddNumbers" CodeBehind='DEMOAddNumbers.cs' %>

<%@ WebService Language='c#' Class="DEMOAddNumbers" CodeBehind='~/DEMOAddNumbers.cs' %>

把它放在一个 App_Code 目录中,然后:

<%@ WebService Language='c#' Class="DEMOAddNumbers" CodeBehind='~/App_Code/DEMOAddNumbers.cs' %>

还是一样的错误信息。我没有使用 Visual Studio,只是直接的代码。有什么建议吗?

谢谢

吉姆

【问题讨论】:

  • 你想要代码文件中的实体,还是什么?
  • 代码文件与 CodeBehind 不同吗?我想要 C# 代码在它自己的 CS 文件中。
  • 在下面添加了答案。如果你想要一个服务于 ASMX 的文件,你不能使用 CodeBehind="" 指令。如果您想要 Web 服务的纯“纯代码”实现,请考虑 WCF 或 WebAPI。

标签: c# asp.net web-services


【解决方案1】:

去掉指向代码隐藏文件的指令。然后您可以将代码嵌入到 ASMX 中。

我建议为类添加命名空间和所有适当的属性,但一旦停止让 ASP.NET 引擎查找文件隐藏代码,它应该可以工作。

【讨论】:

  • 为什么asp.net找不到codebehind文件?这是它在 IIS 6 中的工作方式。我不希望我的所有代码都在 ASMX 文件中。
  • 添加了另一个专注于如何创建代码隐藏文件的答案。为了让 ASMX 使用该指令,您有 2 个文件:ASMX 和 CS。如果你想在一个文件中使用它,那就是 ASMX 文件,因为 ASP.NET 引擎不会解释 .cs 文件中的标签。
【解决方案2】:

您是在手动编码还是在 Visual Studio 中进行?假设手动编码。

  1. 创建名为 DEMOAddNumbers.asmx 的新 ASMX 文件并将这一行放入其中

  2. 创建名为 DEMOAddNumbers.asmx.cs 的新 ASMX.CS 文件并将其放入其中

    使用系统; 使用 System.Web.Services; 公共类 DEMOAddNumbers : WebService { [网络方法] 公共 int AddThis(int x, int y) { 整数总和; 我的总和 = x + y; 返回我的总和; } }

您不能在 ASMX 上使用直接代码。如果您想要“直接代码”,请移至 WCF。

【讨论】:

  • 上面1号线是什么?我有:
  • 好吧,我放弃了。我将所有代码放在 ASMX 文件中,Web 服务就可以工作了。 IIS7,你为什么这么努力?
猜你喜欢
  • 1970-01-01
  • 2019-10-28
  • 2018-11-08
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多