문제

SharePoint에서 이벤트 핸들러를 작성할 때이 문제가 발생합니다. 내 이벤트 핸들러에는 웹 참조가 있습니다. 이 웹 참조를 만들 때 웹 서비스의 URL은 어셈블리의 .config 파일에 추가됩니다. 웹 참조 URL을 변경 해야하는 경우 구성 파일에서 링크를 변경하면됩니다.

DLL을 GAC하려고 할 때 문제가 발생합니다. DLL을 GAC 할 때 구성 파일을 DLL과 함께 게재 할 수 없으므로 웹 참조를 업데이트 할 수있는 방법이 없습니다.

내가 찾은 한 가지 해결 방법은 제작자 메소드 참조를 수정하는 것입니다. 참조를 추가 할 때 Visual Studio에 의해 자동 생성 된 Class는 생성자가 다른 위치에서 웹 서비스 URL을 읽거나 레지스트리 또는 XML 파일을 읽습니다. 미리 정해진 위치. 그러나 Visual Studio를 사용하여 웹 참조를 업데이트 할 때이 참조 파일이 재생되고 모든 수정 사항이 손실되므로 때때로 문제가 발생합니다.

이 문제를 해결하는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

Visual Studio 2008이있는 경우 웹 참조 대신 서비스 참조를 사용하여 생성기가 덮어 쓰지 않고 기능을 재정의하는 데 사용할 수있는 부분 클래스를 생성합니다.

Visual Studio 2005의 경우 부분적 참조 CS의 클래스 키워드 및 자신의 부분 클래스와 별도의 파일을 보관하십시오.

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

WebServiceReference svc = new WebServiceReference(myConfig);

다른 팁

SharePoint가 호스팅하는 모든 응용 프로그램은 IIS의 SharePoint 웹 사이트의 루트에있는 web.config를 사용하고 있습니다. Web/Service Reference Wizard에서 생성 된 구성을 Web.config에 추가하는 것입니다.

이것이 대략 작동하는 방식입니다.

  • SharePoint 응용 프로그램 풀이 DLL을로드합니다
  • DLL은 현재 응용 프로그램 구성 파일에서 서비스 정보를 찾습니다.
  • DLL은 web.config를 찾아 구성 정보를 찾습니다.

기본적으로 DLL에서 생성되는 app.config는 사용되지 않습니다. 이 경우 응용 프로그램은 SharePoint 응용 프로그램을 호스팅하는 응용 프로그램 풀 (W3WP.EXE)입니다. SharePoint의 경우 app.config는 실제로 Web.config로 명명되었으며 SharePoint 웹 사이트의 루트에 있습니다.

클래스 라이브러리의 웹 참조를 동적으로 만들어서이를 해결 한 다음 app.config 파일에서 웹 참조가 포함 된 ApplicationSettings 구성 섹션을 SharePoint 사이트 web.config에 복사합니다.

참고 또한 ApplicationSettings의 항목을 Web.config에 정상적으로 사용하지 않으므로 복사해야합니다.

동적 웹 참조를 사용하지 않고 참조의 코드가 URL의 .config 파일에서 값을 찾지 않도록 정적 참조를 사용하지 않고 시도 할 수 있습니다. 그런 다음 생성 된 웹 서비스 클라이언트 코드를 서브 클래스하고 해당 파생 클래스에서 고유 한 논리를 추가하여 .url 속성을 설정하십시오. 그런 다음 vs.net은 참조를 다시 얻을 수 있습니다. 물론 파생 클래스를 사용하려면 다운 스트림 코드를 업데이트해야하지만 간단한 글로벌 교체 여야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top