c# - 在 IIS 中运行的 C# 网站中添加新的 .cs 文件

标签 c# .net web-services iis proxy

我有一个在 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 热部署机制有点不稳定)
    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 文件中执行此操作:

    <程序集>

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

  • 您还应该检查 dll 是否使用正确版本的 .net 编译,并且在正确的体系结构 (x86/x64) 中以避免冲突,因为这可能是一个旧系统(没有 4.0 clr/32 位仅)。

关于c# - 在 IIS 中运行的 C# 网站中添加新的 .cs 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680620/

相关文章:

.net - 哪个CMS易于使用DotNetNuke或Umbraco。我们还可以将现有项目与之整合吗?

.net - Web服务超时问题

c# - 从脚本组件 (SSIS) 调试 .NET dll

c# - Xamarin 社区工具包 MediaPlayer 自动播放不起作用?

.net - 禁用 datagridview 中的默认 Enter/Return 键行为

c# - .NET API 运行 powershell 脚本

c# - 我可以在 c# (WPF) 中单击而不是在鼠标悬停时打开子菜单菜单项吗?

c# - 多线程无法正常执行

web-services - EJB3 远程 vs Web 服务,性能如何?

Azure Web 服务 [Web App for Containers (linux)] - 如何定期防止超时