이미지 및 스타일 시트를 사용자 정의 컨트롤에서 어셈블리의 포함 된 리소스로 이동하려고합니다. Reflector를 사용하여 이미지와 .css 파일이 어셈블리에 포함되어 있는지 확인했지만 ClientScript.GetWebResourceUrl()로 만든 URL을 사용하여 리소스에 액세스하려고하면 리소스를 찾을 수 없습니다. 나는 혼란 스럽다.asp.net의 포함 된 리소스에 액세스 할 수 없습니다.
조립 기본 네임 스페이스 :
TestWebApp
파일에 대한 경로 (BuildAction으로 표시 : 포함 리소스)입니다을
TestWebApp/Resources/CSS/PaymentHistory.css
TestWebApp/Resources/Images/loading.gif
그래서 내 자원은 다음과 같이 등록 :
[assembly: WebResource("TestWebApp.Resources.CSS.PaymentHistory.css", "text/css", PerformSubstitution = true)]
[assembly: WebResource("TestWebApp.Resources.Images.loading.gif", "image/gif")]
리소스에 액세스하는 사용자 컨트롤 (동일한 어셈블리에서) :
TestWebApp.UserControls.PaymentHistory
간단히 말해서, 저는 현재 이미지 만 참조하고 스타일 시트는 참조하지 않고 있습니다. 내 사용자 컨트롤의를 Page_Load에서 나는 자원 URL에 이미지 컨트롤의 이미지 URL 설정 :
image1.ImageUrl = Page.ClientScript.GetWebResourceUrl(this.GetType(), "TestWebApp.Resources.Images.loading.gif");
런타임시, 모든 오류없이 작동하도록 나타납니다하지만 깨진 이미지를 렌더링합니다. 다음은 렌더링 된 이미지 소스 :
내 브라우저에서 해당 URL로 이동하는 경우<img style="border-width:0px;" src="/WebResource.axd?d=8fC_1tLPjrUCxmFc_Q2MKY0-pHAak-sTWkpLLV3D56H_c08LujXC63ia2PNICE65_i-Q4JqprAigLpbrXG-rIAr6ePO4HHcdQKgdd3szlThv2gizxOJLJsPRNe-b_M6ApTwPsH_5oZAuONTN0cumOTRr1nA1&t=635133745137507721" id="ph1_image1">
, 나는 404 얻을, 리소스를 찾을 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
편집 : 근본적인 것이 틀림 없습니다. 나는 이해하지 못하고 있고, 나는 정말 바보 같은 짓을하고 있습니다. Here is a simple VS 2010 example. JScript1.js를 포함하고 WebResource.axd를 통해 액세스하는 데 필요한 모든 필요한 단계를 수행했지만 오류가 발생합니다.
디버그에서 Assembly.GetExecutingAssembly(). GetManifestResourceNames();를 확인하십시오. 예상하는 자원 이름을 리턴합니다. 또한 문자열 상수를 사용하여 WebResource 특성과 GetWebResourceUrl 명령에서 동일한 문자열을 사용하고 있는지 확인하십시오. – Grax
@Grax - 감사합니다. GetManifestResourceNames()를 사용하여 여러 가지 방법으로 사용중인 문자열이 모두 정확히 일치하고 올바른지 확인했습니다. 또한 하위 폴더에서 리소스를 프로젝트 루트로 옮겨 보았습니다. 나는 내가 지금 "image/gif"로 바꾼 잘못된 콘텐츠 유형 "img/gif"를 발견했으나 놀랍게도 그것을 고치지 않았습니다. 나는 또한 출력 윈도우가 "This is invalid webresource request."라는 두 개의 System.Web.HttpExceptions를 로깅하고 있음을 확인했습니다. 나는 그것이 왜 2 가지인지 모르겠다. 나의 추측은 firefox이거나 "Cassini"가 자동적으로 재 시도했다. – xr280xr
@Grax 만약 당신이 그것을 시험해보고 싶다면 예제로 질문을 업데이트했습니다. – xr280xr