2011-06-14 31 views
3

我编写了一个具有2种方法的ASP.NET Web服务。 这些运行良好,并显示在http://localhost:85/Services/NopService.asmx?WSDLwebservice中的其他方法未显示

如果我添加另一种方法,我不能访问新的!

相关文件位于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文件夹 明确的哈希值。 web

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

谢谢!

+2

你编译了新的代码吗? – 2011-06-14 08:11:28

+1

添加新方法后编译了Web服务吗?确保编译时不会出错。 – 2011-06-14 08:12:10

回答

1

正确的方法是通过右键单击客户端ASP.NET项目中的App_WebReferences文件夹并选择“更新Web /服务引用”选项。这将导致IDE去抓取最新版本的后端Web服务定义文件。

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

2

重新编译你的web服务代码,然后更新它在项目中的引用调用它。

2

确保您发布的内容的.dll不在GAC中。我有一个类似的问题,花了好几天的时间试图找出答案。事实证明,这是在GAC中,一个简单的gacutil/q/f和应用程序池的回收修复了它。

5

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

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

+0

是的,这让我从痛苦中解脱出来。 – Oofpez 2013-04-03 12:50:05

1

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

1

欺骗我,并没有看到我在WSDL中的变化的事情之一 - 我有多个Visual Studio实例打开不同版本的相同的解决方案,它是从不同的实例中选择旧版本。

相关问题