.aspx 확장자 대신 .html 확장자를 사용하는 방법
이 글은 다음의 질문에 대한 답변입니다.
iis7.5 html 에서 asp 코드 사용가능 설정
; http://social.technet.microsoft.com/Forums/ko-KR/d306eb78-bdba-4e9f-b746-52cff590d253/iis75-html-asp-
즉, .html 파일을 .aspx로 확장자를 변환하지 않고 그 상태에서 asp.net 코드를 동작시키는 방법인데요.
일단, asp.net 기능을 하는 간단한 .html 파일을 만들어 볼까요?
<%@ Page language="c#" %>
<!DOCTYPE html>
<html>
<head>
<title>구구단</title>
</head>
<body>
<form action="./mycalc.aspx">
단: <input type="text" name="n" /> <input type="submit" value="보기" /><br />
</form><br />
<%
int number, i;
string txt = Request.QueryString["n"];
if (string.IsNullOrEmpty(txt) == true)
{
return;
}
number = Int32.Parse(txt);
if (number != 0)
{
%>
<b><% Response.Write(number); %> 단</b><br />
<br />
<%
for (i = 1; i <= 9; i ++)
{
%>
<%=number%> * <%=i%> = <%=number * i%><br />
<%
}
}
%>
</body>
</html>
위의 페이지를 IIS 7.5 웹 사이트에 올려 놓고 방문하면 다음과 같이 ^^ 출력됩니다.
IIS에 Integrated Mode가 생긴 이후로 handler 추가 방법이 다소 달라져서 답에 대한 검색을 할 때 약간 주의를 해야 하는데, 다행히 다음의 글에서 원하는 답을 찾을 수 있었습니다. ^^
.htm files are not being processed by aspnet
; http://forums.iis.net/t/1182893.aspx/1
따라서, web.config 파일에 다음과 같은 내용을 추가해 주어야 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation>
<buildProviders>
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
</system.web>
<system.webServer>
<handlers>
<remove name="PageHandlerFactory-Integrated" />
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
<add name="PageHandlerFactory-Integrated-htm" path="*.htm" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
<add name="PageHandlerFactory-Integrated-html" path="*.html" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
</handlers>
</system.webServer>
</configuration>
이렇게 추가해 주고 나면 .html 확장자를 방문해도 정상적으로 asp.net 처리가 잘 됩니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]