ASP.NET 앱이 공유 호스트의 보통 신뢰 하에서 실행되도록 하기 위해 코딩을 피해야 하는 가장 일반적이고 일반적인 사항은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/275444

문제

Medium Trust가 귀하의 수행을 방해하는 것은 무엇입니까?예를 들어, 중간 신뢰로 인해 System.IO.Path.GetTempPath()를 사용할 수 없다는 것을 이미 배웠습니다.그런 것들은 또 뭐야?

도움이 되었습니까?

해결책

신뢰 문제에 대해 배우고 해결하는 방법은 다음과 같습니다.

1) Windows Microsoft.net Framework [귀하의 버전] 파일의 구성 폴더를 검색하십시오.

  • web.config (이것은 루트 구성 파일입니다)
  • web_mediumtrust.config
  • web_hightrust.config

2) web.config를 변경하십시오

<trust level="Medium" originUrl="" />

3) ASP.NET 앱을 사용해보십시오. 내 권한 오류로 인해 내 것이 실패했습니다.

4) Winmerge와 같은 Diff 도구에서 Web_MediumTrust.config 및 Web_Hightrust.config를 diff합니다.

5) 한 번에 하이에서 매체로 설정을 복사하고 앱에 어떤 영향을 미치는지 확인하십시오. 필자의 경우, 오류 메시지는 configurationSpermission을 참조하므로 진단하기 쉽습니다.

당신을 차단하는 web_mediumtrust.config 파일에서 정확한 줄을 고정 할 수 있다면 호스팅 회사와 공유하고 작업을 수행 할 가능성이 더 높을 수 있습니다.

더 많은 문서 : 여기 :
http://msdn.microsoft.com/en-us/library/aa302425.aspx

@Oli, 내 앱 이다 Godaddy에서 주최했으며 Lucene.net을 사용하기 시작했을 때 코드로 해결해야했습니다. GetTempPath 및 System.io.fileInfo를 사용하지 않도록 Lucene.net 소스 코드를 수정해야했습니다.

다른 팁

누가 확신 할 수 있습니까? 그렇기 때문에 Web.config에서 신뢰 수준의 매체 세트로 개발해야합니다.

 <trust level="Full|High|Medium|Low|Minimal" />

대부분의 공유 호스트는 너무 중요한 일부 사항을 제한하기 때문에 진정한 중간 신뢰 환경을 사용하지 않습니다.다른 사람들은 자신의 항문상의 이유로 일부 추가 설정을 제한합니다.

가장 좋은 방법은 호스트에게 ASPNET에 어떤 설정을 사용하는지 물어보는 것입니다.그들이 사용하고 있는 신뢰 수준의 사양을 물어보세요.메모리 한계를 알아보세요.이러한 세부 정보를 얻은 후에는 로컬 수준에서 시나리오를 복제할 수 있어야 합니다.

알려주지 않으면 앱을 중간 신뢰로 실행하도록 설정하세요. 그러나 수정된 ​​신뢰 수준을 사용하는 경우 반드시 작동하지는 않습니다.

여기는 IIS의 신뢰 수준 설정에 대한 일부 정보.

일반적으로 내가 겪은 유일한 문제는 다음과 같습니다.어셈블리를 푸시하는 경우 부분적으로 신뢰할 수 있는 요청(어셈블리 메타 태그)을 허용해야 합니다. 그렇지 않으면 해당 요청을 사용할 수 없습니다.

다음은 GoDaddy의 중간 신뢰 정보 페이지:

중간 신뢰 수준에서 작동하는 응용 프로그램에는 레지스트리 액세스가없고 Windows 이벤트 로그에 액세스 할 수 없으며 반사 회수가 사용할 수는 없지만 반사를 사용할 수 있습니다).이러한 응용 프로그램은 정의 된 네트워크 주소 범위 와만 통신 할 수 있으며 파일 시스템 액세스는 응용 프로그램의 가상 디렉토리 계층으로 제한됩니다.

중간 신뢰 수준을 사용하면 응용 프로그램이 공유 시스템 리소스에 액세스하는 것을 방지하고 응용 프로그램 간섭 ​​가능성을 제거합니다.OLEDBPERMISSION 및 ODBCPERMISSION을 추가하면 응용 프로그램이 해당 데이터 제공 업체를 사용하여 데이터베이스에 액세스 할 수 있습니다.아웃 바운드 HTTP 및 HTTPS 트래픽을 허용하도록 WebPermission이 수정되었습니다.

이는 GoDaddy를 사용하지 않는 한 호스트와 함께 해결해야 할 작업과 정확히 일치하지 않을 수도 있지만 일반적인 예입니다.

중간 신뢰로 제 3 자 라이브러리/프레임 워크 (Castle이 떠오르는)가 구축 (또는 구축 될 수 있음)가 있는지 확인하십시오.

System.runtime.serialization 라이브러리는 중간 신뢰에서 완전히 사용할 수 없습니다.

나는 JSON 직렬화/사막화를 위해 이것을 코딩하고 어려운 방법을 찾았습니다. 중간 신뢰 제한이 비난을받는 것을 확인하기 위해 동료를 얻는 데 일주일이 걸렸습니다. 결과적으로 호스팅 회사를 전환했습니다.

중간 신뢰에서, 적어도 내 호스트에서는 P/Invoke 통화를 사용할 수 없으며, 즉 [DLLImport] COM 구성 요소를 호출하는 것은 작동하지 않습니다.

-에디

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