2009-04-08 7 views
10

사무실의 다른 개발자가 .dll에서 제어 라이브러리를 내보내려고합니다.WebResource.axd가 비어 있거나 없습니다.

솔루션과 같은 나는 원래 만든 외모 :

해결 방법 1 :
- Mri.Controls (클래스 라이브러리)
- Mri.FmTool (웹 응용 프로그램)

Mri.FmTool 참조 Mri.Controls.

Mri.Controls 내부에는 자바 스크립트 웹 리소스가 있습니다. Mri.FmTool은 WebResources를 잘 읽는 것처럼 보입니다. Mri.FmTool 웹 앱이 실행될 때 모든 자바 웹 레오 우스가 나타납니다.

그래서, 지금은 Mri.FmTool

솔루션이 소비하는 간단한 솔루션을 만들려고했다 :
- Mri.ConsumerTest (웹 응용 프로그램)

을 나는 최신 Mri.Controls했다 .dll 및 Mri.ConsumerTest 응용 프로그램에 대한 참조로 추가했습니다. Mri.Controls의 모든 컨트롤은 Mri.ConsumerTest 내부에서 작동하는 것 같습니다. Intellisense가 작동하고 컴파일되며 아무런 문제가 없습니다.

그러나 실행시 WebResource.axd 파일의 대부분은 비어 있으며 단지 비어 있습니다. WebResource.axd 파일 하나가 비어 있지 않으면 단순히 "이 리소스를 찾을 수 없습니다."라는 메시지가 표시됩니다.
빌드 작업 : "포함 리소스"출력 디렉토리에
복사 :

다음은 속성 창 내부의 자바 스크립트 파일의 재산입니다 "복사는 항상"

내가 놓친 게 어떤 단계?

+0

고마워요. 나는 * 같은 * 질문이 없었지만 비슷한 문제가있었습니다. "Build Action : Embedded Resource"속성을 인식하지 못했습니다. 감사! – Matt

답변

2

내 WebResource CSS 파일이 제대로로드되지만 웹 솔루션에서 WebResource에 Javascript가로드되지 않는 것으로 나타났습니다.

따라서 System.Web.UI 을 사용하는 대신. ClientScriptManager을 사용하여 WebResources를 등록하면 System.Web.UI를 사용하도록 전환했습니다. ScriptManager. 이제 파일은 ScriptManager.axd (WebResource.axd 대신)에서 나옵니다. 이것은 문제를 해결하는 것처럼 보였다.수정 전에

기존 코드 :

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

코드 : 코드 조각 위의 수정 후 System.Web.UI.ClientScriptManager

새로운 코드를 사용

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

위의 스 니펫은 System.Web.UI.ScriptManager를 사용합니다.

제 생각에 ClientScriptManager는 2.0에서 도입되었습니다. 필자는 ScriptManager가 훨씬 더 많은 기능을 갖춘 스크립트를 관리하는 새로운 향상된 3.5 방법이라고 생각합니다.

/어깨동구

+0

잘 모르겠습니다. 무슨 뜻인지 코드 스 니펫? –

+0

코드 스 니펫 추가 – taco

+0

관련 부분은 * 정적 * 함수입니다. ScriptManager.RegisterClientScriptResource() - 내가 알아 냈기 전에 잠시 시간을 들였습니다. – vdboor

2

리소스가 DLL의 일부로 설정되어 있습니까?

Mri.Controls & 자바 스크립트 리소스 파일의 속성을 봅니다.
나는 그것이 문제가 될 수있는 곳이라고 생각한다.

+1

내 javascript 파일은 Mri.Controls에서 다음 속성을가집니다 - Build Action : Embedded Resource; 출력 디렉터리로 복사 : 항상 – taco

+1

고맙습니다. 이것은 내 문제였다. Old resurrected project - 어떤 이유로 모든 리소스 파일이 Embedded Resource 대신 Content에 재설정되었습니다. –

3

[assembly : WebResource ("YourNameSpace.YourFile.js", "text/javascript")] 특성이 누락되었을 수 있습니다. WebResource.axd에는 해당 속성이 필요합니다. 이 문제에 대한 추가 정보는 this KB 문서를 확인하십시오.

+0

내 어셈블리 정보에 [assembly : WebResource ("Mri.Controls.Resources.Scripts.Core.js", "text/javascript")]가 이미 있습니다. ... – taco

관련 문제