반응형

.NET 웹 어플리케이션을 개발하는 도중 MySQL Server의 데이터와 연동을 해야하는 일이 필요했다.

우선 Nuget Package를 통해서 MySQL 관련 라이브러리 (MySql.Data.dll, MySql.Data.Entities, MySql.Web)를 설치를 했다.

그리고 web.config에서 MSSQL 접근 방식과 다를게 없이 connectionString설정을 하고 ProviderName를 MySql로 변경을

했다.

 

이래저래 비지니스 로직을 작성 하고 빌드 후 디버깅을 했더니~~~

시원하게 아래와 같이 오류를 뿜어 주신다.

mysql connector net no longer supports server versions prior to 5.0

처음에는 이게 뭔가 싶었다. MySQL Connector .NET을 최신 버전으로 다시 깔아보기도 하고 web.config 코드도 변경해보고

반나절을 삽질을 했지만 결과는 그대로......

 

다음날 모닝 커피를 하면 곰곰히 생각해보니 MySQL의 버전이 의심이 들었다.

역시나 "select version()"을 날려줬더니 4.0이란다...

타 팀의 서버라 "업그레이드 해주세요!! 작업하기 힘들어요" 하기도 그랬다.

MySQL Server를 설치하고 데이터 / 스키마등을 Export 하고 Import하고 여간 귀찮게 아닌다.

개발 환경이 VS2012인데 MySQL Connector .NET 하위 버전을 쓰기는 싫고 성공적으로 연동이 될꺼라는 보장도 없다.

Connector/Net version ADO.NET version supported .NET Framework version required MySQL Server version supported Currently supported
6.7 2.x+ 2.x+ for VS 2008, 4.x+ for VS 2010 / VS 2012, .NET RT for VS 2012 5.7, 5.6, 5.5, 5.1, 5.0 Yes
6.6 2.x+ 2.x+ for VS 2008, 4.x+ for VS 2010 / VS 2012 5.7, 5.6, 5.5, 5.1, 5.0 Yes
6.5 2.x+ 2.x+ for VS 2008, 4.x+ for VS 2010 5.7, 5.6, 5.5, 5.1, 5.0 No
6.4 2.x+ 2.x+, 4.x+ for VS 2010 5.6, 5.5, 5.1, 5.0 No
6.3 2.x+ 2.x+, 4.x+ for VS 2010 5.6, 5.5, 5.1, 5.0 No
6.2 2.x+ 2.x+ 5.6, 5.5, 5.1, 5.0, 4.1 No
6.1 2.x+ 2.x+ 5.6, 5.5, 5.1, 5.0, 4.1 No
6.0 2.x+ 2.x+ 5.5, 5.1, 5.0, 4.1 No
5.2 2.x+ 2.x+ 5.5, 5.1, 5.0, 4.1 No
5.1 2.x+ 2.x+ 5.5, 5.1, 5.0, 4.1, 4.0 No
5.0 2.x+ 2.x+ 5.0, 4.1, 4.0 No
1.0 1.x 1.x 5.0, 4.1, 4.0 No

출처 : http://dev.mysql.com/doc/refman/5.6/en/connector-net-versions.html

 

자자 MySQL Server 버전이 4.0이고

MySQL Connector .NET을 쓰면 오류를 뿜어내고 어떡하지 생각하다가

 

결국 ODBC를 쓰기로 결정했다.

 

http://dev.mysql.com/downloads/connector/odbc/ (최신버전)

http://dev.mysql.com/downloads/connector/odbc/3.51.html (ODBC ver3.51)

 

이곳에서 ODBC Connector ver 3.51을 설치(왜 최신버전이 아닌 하위버전이냐고?? MySQL Server 버전이 4.0이니깐.ㅜㅜ)하고

제어판의 ODBC Administrator에서 MySQL 서버를 시스템 DSN에 등록을 하고

web.config에서

<add name="mysql_conn" connectionString="DSN=MYSQL21;" providerName="System.Data.Odbc" />

이렇게 등록만 하면 비지니스 로직에서 개발하기 위한 준비는 끝이다.

참고로 ODBC를 사용하게 되면 .NET Entity Framework를 사용하지 못한다는 사실!!!! 두둥...

 

마지막으로 참고로 Window7 x64 환경에서 디버깅을 하게 되면 또 다른 런타임 오류가 나타날 것이다.ㅎㅎㅎ

그것은 바로 전 포스팅을 참고 하면 되겠다^^

 

 

 

반응형
반응형

.NET에서 MySQL 서버에 접근하기 위해서 MySQL ODBC를 설정하였다.

ODBC : MySQL ODBC 3.51 Driver 64bit 설치

MySQL 서버 버전이 4.0이기 때문에 ODBC를 사용하였다.ㅡㅡ;;

MySQL의 낮은 버전으로 인해 .NET Connector를 사용하지 못하니 Entity Framework도 쓰지 못한다.

 

로컬에서 테스트를 하는 도중 계속해서 아래와 같은 오류가 나타났다. (에휴,,,,)

"지정된 DSN은 드라이버와 응용 프로그램 간 아키텍처 불일치"

 

원인은

MySQL 서버의 환경이 x32이기 때문이다!!!!!!!! (아~~~ 뽝쳐!!)

 

해결방안은

Command 창에서 C:\Windows\SysWOW65>odbcad32.exe 를 실행하면

x32 ODBC데이터 원본 관리자가 나타난다.

일반적으로 관리도구를 통해 실행한 ODBC 설정이랑 다르다.

기본적으로 관리도구를 통해 사용하는 ODBC 대화창은 x64 환경인것 같다.

x32 ODBC 데이터 원본 관리자에서 해당 MySQL의 정보를 설정하면

정상적으로 연결 되는 것을 확인 할 수 있다.

 

반응형
반응형

각각의 웹 어플리케이션들의 machineKey를 동일하게 설정을 하게 되면 사이트 간의 웹 팜을 구성할 수 있다

한번의 로그인으로 생성된 세션 상태ID를 가지고 웹 팜 내에 구성되어있는 웹 어플리케이션에서 사용할 수 있다.

여기서는 machineKey를 자동으로 생성하는 코드를 공유하도록 하겠습니다.^^

 

- Generator_MachineKey.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Generator_MachineKey.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>제목 없음</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btnGeneratorMachineKey" runat="server" Text="Machine Key 생성" OnClick="btnGeneratorMachineKey_Click" /> <br />
        <asp:Label ID="lblMachineKey" runat="server" Font-Size="12px"></asp:Label>
    </div>
    </form>
</body>
</html>

- Generator_MachineKey.aspx.cs

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Security.Cryptography;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    #region protected void btnGeneratorMachineKey_Click(object sender, EventArgs e) [Machine Key 생성 버튼 클릭]
    /// <summary>
    /// Machine Key 생성 버튼 클릭
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnGeneratorMachineKey_Click(object sender, EventArgs e)
    {
        StringBuilder machineKey = new StringBuilder();

        string key64byte = GetRandomKey(64);
        string key32byte = GetRandomKey(32);

        machineKey.Append("<machineKey");
        machineKey.Append(" validationKey=\"" + key64byte + "\"");
        machineKey.Append(" decryptionKey=\"" + key32byte + "\"");
        machineKey.Append(" validation=\"SHA1\" decryption=\"AES\"");
        machineKey.Append(" />\n");

        lblMachineKey.Text = machineKey.ToString().Replace("<", "&lt").Replace(">", "&gt");
    }
    #endregion

    #region public string GetRandomKey(int bytelength) [Machine Key 생성]
    /// <summary>
    /// Machine Key 생성
    /// </summary>
    /// <param name="bytelength"></param>
    /// <returns></returns>
    public string GetRandomKey(int bytelength)
    {
        byte[] buff = new byte[bytelength];
        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
        rng.GetBytes(buff);

        StringBuilder sb = new StringBuilder(bytelength * 2);
        for (int i = 0; i < buff.Length; i++)
        {
            sb.Append(string.Format("{0:X2}", buff[i]));
        }

        return sb.ToString();
    }
    #endregion
}

 

 

반응형
반응형

jQuery Ajax를 통해서 input file에서 선택된 파일을 서버로 업로드 기능을 개발을 하였다.

하지만 영문이름으로 된 파일은 정상적으로 업로드가 되지만 정작 한글 파일 이름으로 된 파일은 서버 측 오류가

발생을 하였다.

 

로컬에서 디버깅을 하면 정상적이고 업로드가 되고 서버에 배포된 것을 가지고 하면 계속 파일 경로가 잘 못 되었다는

오류를 뱉어내고 있었다.

 

결국 클라이언트쪽 문제가 아닌 서버 문제라는 것을 인지 미친듯이 코드를 분석을 했다. (내가 작업한게 아니라 시간이..)

문제는 서버쪽 Charset 설정 문제!!!!

 

jQuery Ajax는 기본적으로 utf-8로 Content-Type 이 설정이 되어있다. 하지만 우리쪽 서버는 euc-kr로 처리~~

Web.config 파일에 아래 코드를 추가해서 클라이언트, 서버 모두 utf-8로 설정을 하니 정상적으로 동작한다

<system.web>

<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />

</system.web>

 

 

 

반응형
반응형

Visual Studio 2012에서 ASP.NET MVC4 프로젝트를 생성하는 도중에 아래와 같은 오류가 발생할 때가 있다.

"Error: this template attempted to load component assembly 'NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.".

이 현상은 Visual Studio 2012에서 Nuget 설치가 되어있지 않아서다.

해결 방법은 아래와 같은 순서로 진행하면 된다.

1. Visual Studio 2012를 실행 -> Tolls -> Extension & Updates

2. Online을 선택한다.

3. NuGetPackage Manager를 선택해서 Download를 클릭하면 Nuget Package가 설치된다.

 

 

설치가 되면 Visual Studio2012를 재시작한 후 프로젝트를 생성하면 오류 없이 정상적으로 동작하는 것을

확인할 수 있다.

 

반응형
반응형

Sandcastle은 비주얼 스튜디오를 통해 또한 컴파일러를 통해서 생성된 DLL과 코멘트 파일인 XML을 사용하여

Help File을 만들 수 있다.

예전의 프로젝트를 진행하면서 한번 생성을 해본 기억이 있으나, 무엇을 이용해서 만들었는지 기억이 나질 않아서

구글링을 미친 듯이 했었다.

그러는 도중 발견한 Sandcastle 프로그램!!

batch파일을 손쉽게 사용할 수 있도록 GUI 툴을 제공하는데 미리 생성된 DLL파일과 코멘트 파일인 XML 파일의 경로만

찾아서 지정해주면 자동으로 help 파일로 컴파일해준다. (오~~ 놀랍도다!!)

필요에 따라서 기능을 설정할 수 있다. 단점은 컴파일 시간이 조~~옴 길다

프로그램 다운 로드는 아래 주소를 통해서 받으면 된다.

http://shfb.codeplex.com/

다운로드를 받고 차례대로 프로그램을 설치하고 사용하면 된다.

설치가 완료되면 새로운 프로젝트를 생성하고 DLL, XML 경로만 잡아주고 컴파일 하면 된다.^^/

 

역시나 날로 쓰는 블로그!!

 

반응형
반응형

요렇게 하면 된다ㅎㅎ

1) Ensured .net 4.5 is installed.
2) Added <modules runAllManagedModulesForAllRequests="true"/> to my web.config
3) Ran %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir in cmd
4) Checked that my app pool was set to Integrated Mode
5) Checked that it's set to use .net 4

 

 web.config에 아래 코드 추가

<system.webServer>
   
<modules runAllManagedModulesForAllRequests="true" />
    ...
</system.webServer>

반응형
반응형

 

Ext

MIME Type

.doc

application/msword

.dot

application/msword

.docx

application/vnd.openxmlformats-officedocument.wordprocessingml.document

.dotx

application/vnd.openxmlformats-officedocument.wordprocessingml.template

.docm

application/vnd.ms-word.document.macroEnabled.12

.dotm

application/vnd.ms-word.template.macroEnabled.12

.xls

application/vnd.ms-excel

.xlt

application/vnd.ms-excel

.xla

application/vnd.ms-excel

.xlsx

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

.xltx

application/vnd.openxmlformats-officedocument.spreadsheetml.template

.xlsm

application/vnd.ms-excel.sheet.macroEnabled.12

.xltm

application/vnd.ms-excel.template.macroEnabled.12

.xlam

application/vnd.ms-excel.addin.macroEnabled.12

.xlsb

application/vnd.ms-excel.sheet.binary.macroEnabled.12

.ppt

application/vnd.ms-powerpoint

.pot

application/vnd.ms-powerpoint

.pps

application/vnd.ms-powerpoint

.ppa

application/vnd.ms-powerpoint

.pptx

application/vnd.openxmlformats-officedocument.presentationml.presentation

.potx

application/vnd.openxmlformats-officedocument.presentationml.template

.ppsx

application/vnd.openxmlformats-officedocument.presentationml.slideshow

.ppam

application/vnd.ms-powerpoint.addin.macroEnabled.12

.pptm

application/vnd.ms-powerpoint.presentation.macroEnabled.12

.potm

application/vnd.ms-powerpoint.presentation.macroEnabled.12

.ppsm

application/vnd.ms-powerpoint.slideshow.macroEnabled.12

출처 : http://blogs.msdn.com/b/vsofficedeveloper/archive/2008/05/08/office-2007-open-xml-mime-types.aspx

반응형

+ Recent posts