Set max request size on asp.net

.Net

IIS 7+ 에서 운영되는 ASP.NET 웹 응용프로그램의 web.config 에 아래와 같이 설정합니다.

<system.web>
    <httpRuntime maxRequestLength="153600" executionTimeout="900" />
</system.web>

<system.webServer>
    <security>
        <requestFiltering>
                <requestLimits maxAllowedContentLength="157286400" />
             </requestFiltering>
    </security>
</system.webServer>

system.web > httpRuntime 의 maxRequestLength 는 ASP.NET 웹 응용프로그램이 허용하는 파일의 크기를 설정합니다. (단위는 KB Kilobyte 입니다.)

system.webServer > security > requestFiltering > requestLimits 의 maxAllowedContentLength 는 IIS 가 허용하는 요청 Request 의 길이를 설정합니다. (단위는 Byte 입니다.)

교차-원본 자원 공유

.Net

웹 브라우저는 보안을 위해서 동일 원본 정책(Same-Origin Policy, 특정 웹페이지에서 다른 도메인으로 AJAX 요청을 전송하는 것을 금지)을 강제합니다.

교차-원본 자원 공유(CORS, Cross-Origin Resource Sharing)는 W3C의 표준으로, 서버가 동일 원본 정책을 유현하게 우회할 수 있게 합니다. 즉, CORS를 사용하면 서버에서 명시적으로 지정한 일부 교차-원본 요청만 허용하고 다른 요청은 거부할 수 있습니다.

CORS 를 사용하면, JSONP 같은 기존 기법보다 안정하고 유연한 방법으로, 교차-원본 요청을 허용할 수 있습니다.

ASP.NET WebAPI 를 사용하는 응용 프로그램을 작성하고, 웹 응용프로그램을 작성하여 API를 호출하면 HTTP 응답코드는 200인데, 예상하는 결과와 다르게 웹 브라우저에서 응답을 거부함을 볼 수 있습니다.

웹 브라우저의 콘솔창에서 아래와 유사한 메세지를 확인할 수 있습니다.

Origin http://clientdomain.com not found in Access-Control-Allow-Origin header.
XMLHttpRequest: Network Error 0x80700013, Could not complete the operation due to error 80700013.

이전에는 이를 회피하기위해 JSONP를 활용하였습니다.

JSONP를 활용한 동일원본정책을 우회하는 것보다는 NuGet 패키지 Microsoft.AspNet.WebApi.Cors 를 설치해서 CORS를 사용하는 것이 더 좋은 방법이라 생각됩니다.

NuGet 패키지 콘솔로 설치를 하면 의존성도 간편하게 해결되므로 모듈을 수동으로 추가하기 보다는 NuGet 을 사용하여 설치를 하는 것이 좋습니다.

$ Install-Package Microsoft.AspNet.WebApi.Cors

NuGet 패키지 설치를 마쳤으면, WebApiConfig.cs 파일을 열고, 아래 코드를 추가합니다.

유연하게 정책을 추가하는 부분은 생략하고, 기본적인 동작만 확인할 것이므로, 간단하게 EnableCors() 확장메서드를 실행하는 것으로 합니다.

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Enable CORS
        config.EnableCors();
    }
}

설정에서 CORS 사용을 활성화하였으므로, ApiController 클래스에 적용하여, CORS를 사용할 수 있게 하려면 아래와 같이 어트리뷰트를 추가합니다.

아래와 같이 적용된 어트리뷰트는 컨트롤러에 포함된 모든 액션 메서드를 모든 도메인으로부터 허용하는 합니다.

[EnableCors(origin:"*", headers:"*", methods: "*")]
public class TestController : ApiController
{

}

이렇게 CORS 사용된 Web Api를 호출하면 이제는 예상한 결과를 얻을 수 있을 것입니다.

참조 페이지:

FCK Editor 2.6.3. for ASP.NET

.Net

FCKeditor 그리고 FCKeditor.Net Latest version을 내려받습니다.

필요파일

  1. FCKeditor_2.6.3.zip 또는 FCKeditor_2.6.3.tar.gz
  2. FCKeditor.Net_2.6.3.zip

FCKeditor_2.6.3.zip 압축을 해제하고 fckeditor 폴더 내용 전체를 Site의 적당한 위치에 업로드 합니다.

fckeditor_samples 은 없어도 문제없습니다.

  • bin\Release\1.1\FredCK.FCKeditorV2.dll – asp.net 1.1 에서 사용
  • bin\Release\2.0\FredCK.FCKeditorV2.dll – asp.net 2.0 에서 사용

사이트의 bin 폴더에 적당한 버전의 FredCK.FCKeditorV2.dll 파일을 업로드 합니다.

페이지 파일(.aspx)에서 아래의 코드를 추가합니다.

<%@ Register Assembly=”FredCK.FCKeditorV2″ Namespace=”FredCK.FCKeditorV2″ TagPrefix=”FCKeditorV2″ %>

에디터가 들어갈 부분에는 아래의 코드를 추가합니다.

<FCKeditorV2:FCKeditor ID=”FCKeditor1″ runat=”server”></FCKeditorV2:FCKeditor>

에디터가 로드되는지 확인합니다.

샘플 코드

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<%@ Page Language=”C#” %>
<%@ Register Assembly=”FredCK.FCKeditorV2″ 
                     Namespace=”FredCK.FCKeditorV2″ 
                     TagPrefix=”FCKeditorV2″ %>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
    <title>Sample Page</title>
</head>
<body>
    <form id=”form1″ runat=”server”>
        <div>
            <FCKeditorV2:FCKeditor ID=”FCKeditor1″ runat=”server”></FCKeditorV2:FCKeditor>
        </div>
        <input type=”submit” value=”Submit” runat=”server” />
    </form>
</body>
</html>

참조 페이지

FCK Editor 2.6.3. for ASP.NET