我遇到这个问题的时候,我写的一个事件处理程序SharePoint。我的事件的处理程序具有网络的参考。当我创建这个网基准,该网址的网服务将增加。配置文件的大会。如果我必须要改变该网络的参考URL我只是要改变中的链接的配置文件。

问题是当我试着到广汽dll。当我GAC DLL,配置文件不能GACed随着dll,因此,有没有办法让我来更新网参考。

一个解决方法,我们发现的是修改的构造方法参考。cs类其是自动生成的通过可视工作室当我增加一个参考,以便构造读取的网络服务网址从一些其他的位置,说一个登记册或XML文件在某些预定的位置。但这带来了一个问题有时为时更新该网络的启发的采用视觉工作室,这一参考。cs文件中得到再生,和我所有的修改将会丢失。

是否有更好的办法来解决这个问题?

有帮助吗?

解决方案

如果您有Visual Studio 2008,请使用服务引用而不是Web引用,这将生成可用于覆盖功能的部分类,而不会使代码覆盖生成器。

对于Visual Studio 2005,您只需将部分关键字添加到Reference.cs中的类中,并使用您自己的分部类保留单独的文件:

public partial class WebServiceReference
 { public WebServiceReference(ExampleConfigurationClass config) 
    { /* ... */
    }
 }

WebServiceReference svc = new WebServiceReference(myConfig);

其他提示

任何应用程序托管SharePoint是使用网络。config位于根SharePoint网站在IIS。你需要做的是增加配置产生的Web/服务的引导,你的网页。config。

这大约是它是如何工作:

  • SharePoint应用程序池载DLL
  • 你DLL看起来的服务的信息,在当前的应用程序配置文件
  • 你DLL发现网络。配置和寻找配置的信息有

基本上,应用程序。配置,正在产生在你DLL是没有用的。如应用,在这种情况下是应用游泳池(w3wp.exe)托管SharePoint应用程序。对SharePoint的应用程序。config实际上被命名为网络。配置和存在的根SharePoint的网站。

我通过为我的类库创建动态Web引用,然后将包含web引用的applicationSettings config部分从app.config文件复制到我的Sharepoint站点web.config中来解决这个问题。

请注意,您还需要将applicationSettings的条目复制到web.config中,因为这通常不存在。

您可以尝试这样做:而不是使用动态Web引用使其成为静态引用,以便Reference.cs中的代码不会在.config文件中查找URL的值。然后对生成的Web服务客户端代码进行子类化,并在该派生类中添加您自己的逻辑以设置.Url属性。然后VS.NET可以重新生成它所喜欢的Reference.cs,你的网址设置代码将保留。当然,您必须更新任何下游代码才能使用派生类,但这应该是一个简单的全局替换。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top