5

我有一个在 IIS 中运行的 C# 网站。我在 App_code 目录下有几个 .cs 文件。我可以在所有 *.aspx.cs 和 *.ascx.cs 文件中引用它们。我没有 Visual Studio,我需要手动进行更改。

我现在需要使用 .aspx.cs 文件中的 Web 服务。我使用 wsdl.exe 生成了一个代理类,并将其放在 App_code 目录下。但我无法在我的 aspx.cs 文件中引用该文件。我得到错误

编译器错误消息:CS0246:找不到类型或命名空间名称“TestSearchProxy”(您是否缺少 using 指令或程序集引用?)

代理没有定义任何命名空间,我假设它是默认命名空间。我没有在 aspx.cs 文件中添加任何“使用* ”。

有人可以帮我解决这个问题吗?

我尝试的另一种方法是:

我使用 csc 命令从代理文件生成了一个 dll,并将该 dll 放在 bin 目录下。我仍然无法访问代理类。

4

1 回答 1

3

关于第一次尝试:

  • 检查 TestSearchProxy 的命名空间并明确使用它:NameSpace.TestSearchProxy
  • 如果这不起作用,请尝试从生成的代理代码中删除命名空间。
  • 尝试擦除 asp.net 临时目录,这将使它从头开始重新编译 app_code 目录。(这通常是您尝试的第一件事,因为 IIS 热部署机制有点不稳定)
    1. 停止 IIS 服务
    2. DEL /S "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files*.*"
  • 检查代理代码中的编译错误,特别是如果您使用的 wsdl.exe 可能来自比目标平台中部署的 IIS/.net 框架更新的框架版本。

关于第二次尝试,(将dll放在bin目录中):

  • 您需要添加对它的引用,您可以从您的 aspx 网站根目录中的 web.config 文件中执行此操作:

    <组件>

    <add assembly="AssemblyName , Version=1.0.0.0, Culture=neutral, PublicKeyToken=123456789ABCD1"/>

    </程序集>

    或者只是将其添加到 GAC (gacutil -i dllname.dll)。

  • 您还应该检查 dll 是否使用正确的 .net 版本和正确的架构 (x86/x64) 编译以避免冲突,因为这可能是旧系统(仅限 4.0 clr/32 位)。

于 2012-12-05T12:29:56.453 回答