모든 사이트가 작동하는지 확인하기 위해 내부 사이트 용 웹 사이트 확인 프로그램을 만들려고합니다. 이를 위해 우리는 셀레늄 크롬 드라이버를 사용합니다.배포 후 참조 된 파일을 찾을 수 없습니다. C#
우리는 이것을 위해 2 개의 프로젝트가 있습니다 : 코드를 실행하는 1 개의 주요 프로젝트. 1 개의 "공유"프로젝트. 다른 모든 솔루션간에 공유됩니다. 이 프로젝트에는 여러 솔루션에서 사용되는 데이터가 포함되어 있습니다.
우리는 공유 프로젝트에 chromedriver을 배치하고, 이런 식으로 초기화 한 :
public static IWebDriver InitiateChromeDriver()
{
ChromeOptions option = new ChromeOptions();
option.AddUserProfilePreference("download.default_directory", downloadPath);
option.AddUserProfilePreference("disable-popup-blocking", "true");
var path = Path.GetFullPath("Utility");
Console.WriteLine(path);
IWebDriver driver = new ChromeDriver(path, option, TimeSpan.FromMinutes(20));
return driver;
}
이 방법은 함께 Chromedriver.exe과 함께 "유틸리티"폴더에 저장되며, 경우에 로컬로 실행할 수 있습니다 Visual Studio를 통한 디버깅. 프로덕션 서버에 배포 할 때 chromedriver에 대한 경로를 찾을 수 없습니다. 참조 된 경로는 프로덕션 서버의 C : \ windows \ system32 \ inetsrv \ Utility \ chromedriver.exe로 변경됩니다.
파일을 참조 할 때 더 나은 방법은 무엇이며 경로가 올바른지 확인하십시오.
간단한 해결 방법은 솔루션의 .Config 파일에 경로를 저장 한 다음 사용하는 것입니다. –
이 방법의 문제점은 경로가 변경 될 수 있다는 것입니다. 우리는 IIS에 여러 사이트를 운영하는 서버가 여러 개 있으며 C :/드라이브 모두에서 실행되는 것은 아니므로 경로가 변경됩니다. 우리가 이전 버전을 저장 했으므로 폴더 이름이 변경됩니다. 배포 할 때 새 폴더 이름에는 연결된 배포의 현재 타임 스탬프가 있으므로 폴더 이름도 변경됩니다. – Jannik
그런 다음 설치 프로그램이 레지스트리 키에 경로를 저장하도록 할 수 있습니다 (MSI 또는 유사한 것으로 가정). –