Web服务中的其他方法未显示

时间:2011-06-14 06:42:33

标签: c# asp.net web-services

我写了一个有两种方法的ASP.NET Web服务。 这些运行正常并显示在http://localhost:85/Services/NopService.asmx?WSDL

如果我添加其他方法,我无法访问新方法!

相应文件位于D:\ Web \ NopCommerceStore \ Services \ NopService.asmx和..asmx.cs中 在任何地方都没有其他任何文件!

如果我只是添加另一种方法,如:

[WebMethod]
public string Hi(string you)
{
    return "Hi " + you;
}

并导航至http://localhost:85/Services/NopService.asmx?WSDL 新方法没有出现 - 即使在以下情况之后: 重启IIS 清除temp.asp.net文件夹 clear hash.web

如何使用新方法更新我的网络服务?

谢谢!

6 个答案:

答案 0 :(得分:5)

如果您从其他项目复制了.asmx文件,请务必更改代码隐藏文件和标记中的命名空间(右键单击.asmx文件并选择“查看标记”)。

否则,标记文件将具有指向上一个项目的Class属性。如果您的系统上仍然存在该先前项目,则无论您在新的代码隐藏文件中执行了什么操作,都将引用其方法。

答案 1 :(得分:2)

重新编译您的Web服务代码,然后在项目调用内更新其引用。

答案 2 :(得分:2)

确保您发布的.dll不在GAC中。我有类似的问题,并花了几天时间试图解决它。原来它是在GAC和一个简单的gacutil / q / f和应用程序池的循环修复它。

答案 3 :(得分:1)

执行此操作的正确方法是右键单击客户端ASP.NET项目中的App_WebReferences文件夹,然后选择“更新Web /服务引用”选项。这将导致IDE继续获取最新版本的后端Web服务定义文件。

右键单击App_WebReferences文件夹并更新Web引用时,实质上是更新ASP.NET应用程序正在使用的所有Web服务的定义。这意味着如果您有多个不同的Web服务的引用,它将转到它们中的每一个,以获得更新的定义集。在您只想更新一个Web服务定义(即您知道已更改的定义)的某些情况下,这可能不是必需的。

答案 4 :(得分:1)

右键单击解决方案资源管理器中的服务并更新Web服务。我查过了。

答案 5 :(得分:1)

欺骗我并且没有看到我在WSDL中的更改的一件事 - 我有多个Visual Studio实例使用相同解决方案的不同版本打开,并且它从不同的实例中选择旧版本。