IIS에서 CSS, 이미지, JS가로드되지 않음


126

내 모든 응용 프로그램은 정상적으로 작동했지만 IIS의 모든 사이트가 CSS, 이미지, 스크립트를로드하지 않습니다. 로그인 페이지로 리디렉션됩니다.

로그인하면 정상적으로 작동합니다. 예 : mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

내 로컬 컴퓨터에서 로그인하지 않고도 정상적으로 작동합니다.


실제 태그가 아닌 잘못된 태그 추가 ...
Renatas M.

3
이 동작의 원인을 알고 태그가 관련되어 있다고 생각 하기 때문에 태그가 지정된 버전으로 롤백합니다 . 그렇지 않다면 투표를 마치겠습니다.
Tim Medora

이 웹 구성에 문제가 없습니다. 모든 답변을 시도했습니다. IIS에 문제가 있다고 생각합니다. 하나의 응용 프로그램을 배포하기 전에 모든 사이트가 제대로 작동했기 때문에 iis에 모두 영향을줍니다.
Imran Rashid

@ImranRashid-이 사이트는 IIS의 다른 사이트에서 설정을 상속합니까?
Tim Medora

@Tim Medora-다른 사이트에서 상속되지 않습니다.
Imran Rashid

답변:


185

문제는 IIS가 정적 콘텐츠를 제공하지 않아서 설정할 수 있다는 것입니다. 여기에 이미지 설명을 입력하십시오

출처 : http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

윈도우 10:

위 대화 상자의 Windows 10 버전


2
비슷한 문제가있어서 설치 문제라는 것을 알았지 만 정적 컨텐츠를 활성화하면 문제가 해결 된 것 같습니다!
ife labolz

5
이것은 내 베이컨을 저장했습니다. 이것은 기본적으로 활성화되어 있다고 생각하지만 Windows 10에서는 그렇지 않습니다.
Justin

3
이 설정은 기본적으로 선택되어 있지 않습니다.
RayLoveless

3
@RayLoveless 저는 MVC에서 정적 컨텐트가 작동하도록 활성화 된이 IIS 기능에 MVC가 크게 의존한다는 것이 문제라고 생각합니다. 나는 그들이 그렇게 결합되어서는 안된다고 생각합니다. 아마 .NET Core가 이것을 고칠 것입니다. : p
Matt Kocaj

2
마지막으로 2 년 후 다시 같은 답으로 구원을 받았습니다.
Eric Wu

176

Windows Server 2012 R2의 IIS 8.5에서 ASP.Net 4.5에 웹 응용 프로그램을 설치할 때 인증되지 않은 페이지에서 CSS, JS 및 이미지를로드하지 못하는 경우에도 같은 문제가있었습니다.

  1. 정적 콘텐츠 역할을 설치했습니다
  2. 내 웹 응용 프로그램은 IIS의 wwwroot 폴더에 있었고 모든 Windows 폴더 권한이 그대로 유지되었습니다 (IIS_IUSRS를 포함한 기본 권한).
  3. CSS, JS 및 이미지가 포함 된 모든 폴더에 대한 권한을 추가했습니다.
  4. Windows 공유에 웹 응용 프로그램 폴더가 있으므로 @ imran-rashid가 제안한 공유를 제거했습니다.

그러나 아무것도 문제를 해결하지 못한 것 같습니다. 그런 다음 익명 사용자의 ID를 App Pool Identity로 설정하려고 시도하고 작동하기 시작했습니다.

인증 기능을 클릭하십시오 익명 인증 편집 앱 풀 ID로 변경

몇 시간 동안 고개를 저으며이 응답이 동료 개발자의 고통을 덜어주기를 바랍니다.

왜 이것이 효과가 있는지 알고 싶습니다. 이견있는 사람?


1
이것은 또한 나를 위해 일했습니다. "특정 사용자"에게는 응용 프로그램 풀의 ID가있는 폴더 위치에 대한 권한이 없기 때문입니다.
dcinadr 2016

4
몇 시간 ? 4 일 이상 걸렸습니다. 감사합니다. 도움이되었습니다. :)
Tito

3
wwwroot 폴더를 공유 한 후 갑자기이 문제가 발생했습니다. 당신의 해결책은 그것을 고쳤습니다. 시간을내어 추가하고 세부 사항을 가져 주셔서 감사합니다.
자원

1
전설! 대단히 감사합니다
David

1
이것은 내가 당신의 게시물을 검색 해야하는 두 번째 시간입니다. 내가 할 수 있다면 100 배로 찬성 했어 Umbraco를 사용하고있었습니다-Documents \ Visual Studio 2013 \ Projects를 사용하여 로컬 IIS를 설정했습니다. 추가 CPUName\IIS_IUSRS되었지만 여전히로드되지 않습니다. 다시 감사합니다!
Rob Scott

18

비슷한 오류가 발생했습니다. 콘솔은 다음과 같습니다.

오류

내 문제는 회사가 하나의 최상위 도메인을 사용하고 하위 도메인을 사용하지 않았기 때문에 하위 폴더에서 내 사이트를 실행하고 있다는 것입니다. 이처럼 :

host.com/app1

host.com/app2

내 코드는 localhost에서는 잘 작동했지만 app1 또는 app2에서는 작동하지 않는 스크립트를 포함하여 다음과 같이 보였습니다.

<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />

~src에 물결표를 추가하고 모든 것이 작동했습니다.

<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />

~vs의 설명 /:

  • / -사이트 루트
  • ~/ -응용 프로그램의 루트 디렉토리

/사이트의 루트 ( http://host.com/) 를 반환합니다 .

~/응용 프로그램의 루트를 반환합니다 ( http://host.com/app1/).


1
투표. 이 문제가 발생했습니다. 앱은 무대에로드하는 것이 아니라 프로덕션에로드하는 것이 었습니다. ~ /와 함께 @ Url.Content ()도 사용합니다. 프로덕션에서 테스트되지는 않았지만 작동 할 것 같습니다.
Kross

17

web.config 에서 staticContent 섹션을 제거하십시오 .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>

staticContent를 제거해도 작동하지만 이제 모든 글꼴이 404입니까?
Rajesh Sivasankaran

나는 이것에 전문가가 아니지만 웹 사이트 속성의 HTTP 헤더 탭에서 IIS 관리자를 통해 글꼴에 올바른 MIME 유형 선언을 추가해야 할 수도 있습니다.
intrepidis 2013

1
내가 개발이 일부 .woff 파일 항목을 가지고 있기 때문에 이것은 나를 위해 문제를 해결하지만, 생산에 같은 설정은 조정이 필요
guideX을

고맙습니다 intrepidis, 제 경우에는 당신의 제안이 저에게 효과적이었습니다. 건배!
user752746

15

이것은 귀하의 질문에 대답하지 못할 수도 있지만 새로운 IIS 설치와 동일한 증상으로 머리를 두드리고 있습니다. CSS, JS 및 이미지가 표시되지 않았습니다. "정적 내용"역할이 IIS 7.5에 설치되어 있지 않기 때문입니다.


당신은 다른 문제가있을 수 있으며 내 문제는 inetpub에서 디렉토리를 이동할 때 문제를 되돌릴 때 권한을 제거하는 것이 었습니다.
Imran Rashid

7

web.config에서 Windows 인증을 사용하도록 설정했을 수 있습니다. 로컬 컴퓨터에서 Windows 자격 증명이 자동으로 전달되어 작동합니다. 라이브 사이트에서는 익명 사용자로 취급됩니다 (IE 설정은이를 제어 할 수 있지만 실제로 수행중인 작업을 모르면이를 수정하지 마십시오).

이로 인해 다음이 발생합니다.

  • 명시 적으로 로그인해야합니다.
  • 인증되지 않았기 때문에 스크립트 및 CSS와 같은 리소스는 로그인 페이지에 제공되지 않습니다.

이것은 깨지지 않고 의도 된대로 작동하지만이를 "수정"합니다.

  • 로그인을 원하지 않으면 web.config에서 인증 유형을 변경하십시오.
  • 인증 규칙을 지정하는 CSS, 이미지, 스크립트 등을 포함하는 디렉토리에 web.config를 추가하십시오.

인증 모드가 양식이 창이 아닙니까? 응용 프로그램 웹 구성 파일 대체 시스템 구성? IIS에이 문제를 일으키는 설정이 있습니까?
Imran Rashid

양식 인증은 또한 로그인 프롬프트를 트리거하고 스크립트 및 이미지와 같은 리소스가 제공되지 않도록합니다. web.config에서 변경해야 할 특정 변경 사항에 대해서는 다른 답변을 참조하십시오. IIS에서 설정을 저장하면 웹 구성이 수정됩니다.
Tim Medora

나는 그것을 스스로 해결한다. 네트워크에서 wwwroot 폴더를 공유하면 문제가 발생합니다. 디렉토리의 권한을 변경합니다. 공유를 해제하고 권한을 기본값으로 설정하면 그것은 해결 :) 감사 팀
Imran Rashid

6

이것을 web.config에 추가하십시오

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

경로는 상대적이며 때때로 루트를 추가하면 문제가 해결됩니다. 경로를 설정해보십시오"~/Images"
StuperUser

6

web.config 파일의 구성 섹션에서 이것을 사용하십시오.

<location path="images">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="css">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="js">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>

6

Windows 권한 문제로 잘못된 권한을 상속받는 폴더를 이동합니다. wwwroot 폴더로 이동하고 iis 사용자에게 권한을 추가하면 정상적으로 작동합니다.


1
나는 같은 문제가 있었다. 프로젝트 파일 desktopwwwroot 폴더 로 옮겼다. 또한 응용 프로그램 풀과 관련된 네트워크 서비스에 대한 모든 제어권을 추가했다.
mihkov

3

나를 위해 이것을 추가 web.config하면 문제 가 해결되었습니다.

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>

2

내 고통의 시간은 web.config에서 MIME 유형을 정의했기 때문에 발생했습니다. 개발 서버에는 이것을 필요로했지만 로컬 IIS는 MIME 유형을 복제했기 때문에 싫어했습니다 ... 일단 web.config에서이를 제거하면 js, css 및 이미지가로드되지 않는 문제가 사라졌습니다.


그것이 MIME 유형을 복제 할 수 있다고 믿기 어렵습니다! 다른 사용자 권한 등을 시도하여 적어도 한 시간 동안 닦았 지 만 web.config에서 MIME이 복제되었습니다. :-|
Aaron Hudon

2

이것은 인증 문제입니다. 필자의 경우 다음 단계로 해결되었습니다. 1- 왼쪽 창에서 IIS 관리자로 이동하여 서버 루트를 확장하고 사이트 노드에서 웹 응용 프로그램을 선택하십시오. 2- 홈 화면에서 IIS 섹션으로 이동하여 인증을 선택하십시오. 3- 익명 인증을 활성화합니다. 4- 그런 다음 편집을 선택하고 익명 인증 자격 증명 편집을 응용 프로그램 풀 ID로 설정합니다.

익명 인증 자격 증명


나는 같은 단계를 밟아 문제가 해결되었습니다. 감사합니다 Alireza.
Arvind Gautam

1

나의 경우에는,

IIS는로 모든 것을로드 할 수 localhost있지만 템플릿 파일 app.tag을 로드 할 수 없습니다.192.168.0.123

.tag확장명이 목록에 없기 때문 입니다.

IIS MIME 유형


1

이 문제를 해결하려면

인터넷 정보 서비스 (IIS)로 이동

이미지를로드하려는 웹 사이트를 클릭하십시오

IIS 섹션에서 인증 메뉴를 열고 Windows 인증 사용을 설정하십시오.


1

프로덕션 사이트 사본으로 작업 할 때 localhost 테스트 환경에서 사이트를 개발할 때 과거에 도움이 된 한 가지 제안이 있습니다. 표준 태그를 주석 처리했는지 확인하십시오.

  <!--<base href="http://www.example.com/">//-->

1

위의 모든 솔루션을 시도했지만 여전히 문제가 있으면 ASP.NET의 ResolveClientUrl () 메서드를 사용해보십시오.

예제 스크립트 :

사용하는 대신

<script src="~/dist/js/app.min.js" ></script>

방법을 사용하십시오

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

이것은 내가 돕는 친구를 위해 일한 내 솔루션이었습니다!


1

나는이 같은 문제가 있었다. 저에게는 IIS의 서버 수준에서 Cache-Control 헤더가 no-cache, no-store로 설정되어 있기 때문입니다. 그래서 내 응용 프로그램의 경우 아래에 web.config에 추가해야했습니다.

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>

0

그 원인 중 하나는 응용 프로그램이 포트 443 (표준 SSL 포트)에서 실행될 것으로 예상하고 포트 443이 이미 사용 중이기 때문입니다. Skype가 컴퓨터에서 실행되는 동안 개발자가 응용 프로그램을 실행하려고 시도 하면서이 문제가 여러 번 발생했습니다.

놀랍게도 Skype는 포트 443에서 실행됩니다. 이것은 제 생각에는 끔찍한 디자인 결함입니다. 응용 프로그램이 443 대신 444에서 실행하려고하면 Skype를 종료하면 문제가 해결됩니다.


0

나는 추가 app.UseStaticFiles();가 고정되는 것보다, 구성 방법의 starup.cs에이 코드를.

이 폴더에 대한 권한을 확인하십시오.


0

이미지 사용

@Url.Content("~/assets/bg4.jpg")

스타일에 이것을 사용하십시오

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))

0

내 경우에는 내 자바 스크립트, png 또는 css 파일 중 어느 것도로드되지 않았을 때 위의 대부분의 답변을 시도했지만 아무도 트릭을 수행하지 않는 것 같습니다.

마지막으로 " 요청 필터 "를 찾았 으며 실제로 .js, .png, .css를 활성화 / 허용 파일 형식으로 추가해야했습니다.

변경 한 후에는 모든 파일이 올바르게 제공되었습니다.


0

브라우저 콘솔에 403 오류가 발생하면 MVC 번들 구성을 확인하십시오. 번들 이름은 프로젝트의 기존 폴더 이름과 일치하지 않아야합니다.

예.

bundles.Add(new StyleBundle("~/Content/css")...

... $ (ProjectDir) \ Content \ css 폴더 구조 가 기존 폴더 내에서 존재하지 않는 번들 컨텐츠를 찾기 때문에 프로젝트에 존재하는 경우 IIS에 문제가 발생할 수 있습니다 .

대신 다음과 같은 것을 사용하십시오.

bundles.Add(new StyleBundle("~/Content/cssbundle")...

0

이 문제는 IIS가 JS, CSS, 이미지 파일과 같은 정적 내용을 렌더링하지 않을 때 발생합니다.

이 문제를 해결하려면 다음 단계를 수행해야합니다.

제어판> Windows 기능 설정 또는 해제> 인터넷 정보 서비스> 월드 와이드 웹 서비스> 공통 HTTP 기능> 정적 컨텐츠로 이동하십시오.

정적 컨텐츠가 켜져 있는지 확인하십시오.

빙고. 그리고 당신은 끝났습니다. 페이지를 다시로드하면 모든 정적 내용을 볼 수 있습니다.


0

나는 똑같은 문제가 있었고 모든 제안을 시도했지만 아무것도 얻지 못했습니다. 나에게 시간을 버렸다. 몇 가지 이유로 ISP에서 포트 80을 차단했습니다.

조언 : 트래픽을 확인하십시오. 포트 80이 로컬 (예 : 방화벽)과 외부에서 모두 작동하는지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.