저는 공통 기능 비트가있는 프로젝트에서 작업했습니다. 특히 마스터 파일과 관련 이미지/js/등을 공유하려고했습니다. 이를 위해 마스터 페이지와 종속 파일은 모두 모든 "하위 프로젝트"에서 사용되는 "전역"DLL로 래핑됩니다. 이 모든 것이 개발 과정에서 훌륭하게 수행되었지만 많은 사람들이 경비원을 잡아 당기는 것 같아서 배포가 갑작스럽게 나타났습니다. VirtualPathProvider
은 사전 컴파일 될 때 작동하지 않습니다.VirtualPathProvider는 IIS 7.5의 프로덕션에서 작동하지 않습니다.
덕분에 this blog post containing a workaround 덕분에 다시 시도해 볼 수있었습니다. 유감스럽게도 아직 그렇지 않습니다.
나는 나의Global.asax
구현을 제거하기로 선택하고 블로그 게시물의
AppInitialize
접근했다 :
public static class AppStart
{
public static void AppInitialize()
{
HostingEnvironment hostingEnvironmentInstance = (HostingEnvironment)typeof(HostingEnvironment).InvokeMember("_theHostingEnvironment", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.GetField, null, null, null);
MethodInfo mi = typeof(HostingEnvironment).GetMethod("RegisterVirtualPathProviderInternal", BindingFlags.NonPublic | BindingFlags.Static);
mi.Invoke(hostingEnvironmentInstance, new object[] { new MasterPageProvider() });
}
}
실제 공급자가 디버그에서 작동하기 때문에, 내가 포함되지 않습니다. 그것을보고 싶다면 주저하지 말고 물어보십시오. 질문을 최대한 짧게하고 싶었습니다.
이 모든 상황에서 흥미로운 점은 제작을 통해 마스터 페이지를 찾을 수 없다는 오류가 발생하지 않는다는 것입니다. 나에게 이것은 공급자 이이라는 것을 의미하지만, 어떤 이유로 든 나머지 리소스 (js/css/etc)는 어셈블리에서 제대로 검색되지 않습니다.
그럼 내 질문에이 문제가 발생합니다.이 솔루션은 개발시 큰 효과가 있지만 IIS 7.5에서는 작동하지 않는 이유는 무엇입니까?
UPDATE는
2011년 11월 20일 데이비드 에보의 제안을 시도하고 불행하게도 아무 결과도 없었다. (필자는 세 번째 줄에서 주석,
<configuration>
<connectionStrings>
<clear />
<!-- ... -->
</connectionStrings>
<system.web>
<pages>
<controls>
<!-- ... -->
</controls>
</pages>
<compilation debug="true" targetFramework="4.0" />
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
UPDATE 2011년 11월 21일
그냥 VirtualPathProvider 실제로 일하는 나의 의심을 확인 : 내 웹 설정은 이제 다음과 같이 보입니다 mi.Invoke(....
) 사이트를 재배포하십시오. 의심 스럽지만 이제는 MasterPage 파일을 찾을 수 없기 때문에 중단됩니다. 이 문제는 VPP를 통해 전달되는 정적 파일과 관련이있는 것으로 보입니다.
일을 마치면 그 사진을 줄 것입니다. 이것은 내 최근 결과 (모든 것이 맞습니다)로 인해 대답 인 것 같습니다. 협조 해 주셔서 감사합니다. –
도움을 주셔서 대단히 감사합니다. 이것은 지금 2 주 동안 나를 괴롭 히고있다! 이전에 한 번 보았지만 IIS가 정적 파일 자체를 제공한다고 생각하지 않았습니다. 225 명의 담당자를 즐기십시오! –
답변을 조금이라도 확장하고자한다면 확장 기능 당 하나의 처리기가 필요하다고 언급해야합니다. 또한, 나는 POST 동사가 필요하다고 생각하지 않는다. (반드시 나쁜 것은 아니지만 ...). –