web.config问题

时间:2011-05-05 13:28:35

标签: c# asp.net web-services c#-4.0 web-config

我对MS webservices和web.config配置有疑问。

我有一个内部有两个项目的解决方案:

  • Webservice ws_A a
  • 网站web_A

我的网站通过Visual Studio中的“Web引用”连接到我的网站。我的网络服务通过以下方式连接到我的数据库:

public static SqlConnection sqlConn = new SqlConnection(myString);

在我的web服务中,我使用以下方法从webservice web.config检索连接字符串:

String sa = ConfigurationManager.ConnectionStrings["bdd"].ConnectionString;

我通过网站(WebReferences)调用Web服务并从中检索一些信息。

但是为了在webservice中检索字符串,我需要在web.config网站中声明这个字符串。这不符合逻辑,因为只有web服务需要这个字符串才能在数据库中保存数据。

如果我没有在web.config网站中声明字符串,我在webservice中有一个nullReferenceException。

任何人都知道这个问题和解决方案,以避免将ConnectionString放入网站?它必须不知道数据库是否存在!

编辑: 要使用我的网络服务,我在网站上执行此操作:

WebService1.WS_A webservice = new WebService1.WS_A();

3 个答案:

答案 0 :(得分:1)

如果我理解你所说的目前不可能的话。该网站实际上托管了Web服务。因此,您需要在网站的web.config中进行所有配置。

如果您不希望网站具有与数据库的连接字符串,此时您需要创建一个单独的项目来托管Web服务。然后,您可以在该单独的项目中配置数据库连接,第一个网站将完全不知道。

此时,您将真正使用网络服务,而不是创建一个自我托管的花哨服务,并且不会通过简单的类购买任何东西。

答案 1 :(得分:1)

这是一种正常行为,因为Web服务将在Web应用程序的上下文中运行,因此它将访问Web应用程序的配置文件。 如果你有一个连接到数据库的dataaccess层,你可以使用dataaccess与web应用程序或windows应用程序或控制台应用程序或...,所以dataaccess将访问它在其上下文中运行的项目的配置文件

答案 2 :(得分:0)

每个项目只能访问自己的配置资源,无法访问其他项目的配置资源。因此,如果您需要使用存储的连接字符串从您的网站使用连接字符串(不确定为什么这是必要的,但我离题...)来实例化您的Web服务,那么连接字符串需要作为资源提供给网站。

我仍然不确定为什么你需要用连接字符串来调用你的web服务,因为我使用ASMX和WCF服务而且我从来没有必须在客户端代理上提供连接字符串的顺序致电该服务。

但是,我必须承认,我在.NET中使用Web服务的各种配置/设置选项的经验相对有限,所以我绝不排除在您的情况下可能需要实例化您的事实带有连接字符串的客户端代理。

相关问题