从类库中使用asp.net应用程序中的Web服务

我的团队和我有一个asp.net Web表单应用程序,并使用几个类库。 在其中一个库中,我们尝试使用Web服务。 Web引用已添加到Web应用程序项目中,并添加了相应的引用。 该应用程序编译。 尝试在类库中使用所述Web服务时,凭据似乎不起作用,并且调用失败。 但是,如果我们从类库中取出Web服务调用,并在Web应用程序中使用它,它就可以工作。

任何想法为什么这不适用于类库。

可能你错了! 这是一个例子:

var serviceName = new ServiceName { Credentials = new NetworkCredential("Username", "Password", "Domain"), Url = "Here you put the correct url of the web service if you published somewhere else" }; serviceName.CallWebMethod(); 

确保您输入了正确的凭据用户名和密码,并确保您已将Web服务发布到您访问它的位置。

仔细检查配置文件是否包含Web服务的正确信息。

尝试将URL行为更改为动态。

此外,正如约翰所说,我假设您正在将服务添加到类库中,因为您打算在库中使用它,而不是Web应用程序的其他区域。

“凭证似乎不起作用,并且调用失败”……你能给出错误的小堆栈跟踪吗?

只是为了澄清一下,在我当前的项目中,我们使用带有绑定和凭据的类库中的WCF端点。 在您尝试时,可以对SOAP ASMX Web引用执行相同的操作。

您可以通过执行以下步骤添加Web服务引用:

  1. 右键单击Solution Explorer上的项目
  2. 单击添加服务引用
  3. 单击高级
  4. 您将在表单的末尾找到“添加Web引用”

如果要在应用程序中添加引用然后从类库中使用它…如何调用类库…通过添加引用并调用类库的方法,然后如何从类库中访问代理,您需要参考它……在我看来是一个循环参考。 哪个不应该在第一个地方编译……你是否正确描述了你的结构?

最好只添加一个带有Web引用的简单项目,然后在需要它的所有项目上添加该项目的引用。

您是否在Web应用程序的配置文件中定义了任何凭据信息? 如果是这样,类库可能无法正确获取它们。 只是一个猜测。 约翰桑德斯是对的。 似乎有点向后阅读您对应用程序结构的描述。

您可以通过执行以下步骤添加Web服务引用:

右键单击Solution Explorer上的项目单击Add Service Reference,单击Advanced,您将在表单的末尾找到“Add Web Reference”

通过@AMgdy的解决方案,它将自动生成一个Reference.cs类。它定义了webservices的所有方法。