我有一个在 IIS 中运行的 C# 网站。我在 App_code 目录下有几个 .cs 文件。我可以在所有 *.aspx.cs 和 *.ascx.cs 文件中引用它们。我没有 Visual Studio,我需要手动进行更改。
我现在需要使用 .aspx.cs 文件中的 Web 服务。我使用 wsdl.exe 生成了一个代理类并将其放在 App_code 目录下。但我无法在我的 aspx.cs 文件中引用该文件。我得到错误
Compiler Error Message: CS0246: The type or namespace name 'TestSearchProxy' could not be found (are you missing a using directive or an assembly reference?)
代理没有定义任何命名空间,我假设它是默认命名空间。我没有在 aspx.cs 文件中添加任何“using *”。
有人可以帮我解决这个问题吗?
我尝试的另一种方法是:
我使用 csc 命令从代理文件生成了一个 dll,并将该 dll 放在 bin 目录下。我仍然无法访问代理类。
最佳答案
关于第一次尝试:
- 检查 TestSearchProxy 的命名空间并显式使用它:NameSpace.TestSearchProxy
- 如果这不起作用,请尝试从生成的代理代码中删除命名空间。
- 尝试清除 asp.net 临时目录,这将使它从头开始重新编译 app_code 目录。 (这通常是您尝试的第一件事,因为 IIS 热部署机制有点不稳定)
- 停止 IIS 服务
- DEL/S "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files*.*"
- 检查代理代码中的编译错误,特别是如果您使用的 wsdl.exe 可能来自比目标平台中部署的 IIS/.net 框架更新的框架版本。
关于第二次尝试,(把dll放到bin目录下):
您需要添加对它的引用,您可以从您的 aspx 网站根目录中的 web.config 文件中执行此操作:
<程序集>
程序集>
或者只是将其添加到 GAC (gacutil -i dllname.dll)。
您还应该检查 dll 是否使用正确版本的 .net 编译,并且在正确的体系结构 (x86/x64) 中以避免冲突,因为这可能是一个旧系统(没有 4.0 clr/32 位仅)。
关于c# - 在 IIS 中运行的 C# 网站中添加新的 .cs 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680620/