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

时间:2012-12-03 09:45:39

标签: 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文件中引用该文件。我收到了错误

  

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

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

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

我尝试的另一种方法是:

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

1 个答案:

答案 0 :(得分: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)以避免冲突,因为这可能是旧系统(No 4.0 clr / 32bit)只)。