인터넷 찾아보니까 권한 문제라는 얘기가 많았는데

권한은 Everyone 읽기 및 실행권한이 있음에도 불구하고 계속 에러가 났다.


이거저거 건들다보니 찾았는데


IIS 서비스에 등록할 때 아무 설정 없이 등록하느라

.NET framework 가 디폴트 값(v2.0) 으로 세팅되서 발생한 문제였다.


제어판-관리도구-IIS 관리자 메뉴에서 [응용 프로그램 풀] 로 들어간 후 보이는 목록에서

해당 응용프로그램 우클릭-.NET Framework 버전을 v4.0 으로 수정하니 정상적으로 진행이 가능했다.


- 내가 나중에 또 찾을까봐 써놓는 기록.


MySQL이 오라클로 넘어가면서 유료화 되었다.

그래서 무료로 사용하기 위해서는 MariaDB를 사용하여야 하는데,

MySQL과 MariaDB는 구조적으로 동일하기 때문에 연동하는 방법도 같다.


http://dev.mysql.com/downloads/connector/net/

위 경로에서 닷넷 커넥터 설치파일을 받아서 설치한 후,


mysql-connector-net-6.9.7.zip

mysql-connector-net-6.9.7.z01


(오라클 로그인 절차가 번거로우시면 위 파일을 다운받아 주세요.
용량이 10MB를 초과하여 분할압축 하였으며,

2015.08.24 기준 Generally Available (GA) Releases 버전입니다.)


C:\Program Files (x86)\MySQL\MySQL Connector Net 6.4.6\Assemblies


위 경로에 있는 dll을 참조에 추가해주면 된다.

(.NET framework 버전에 따라서 2.0 과 4.0 중 골라서 추가)



만약, dll 추가후

참조된 어셈블리 "~"이(가) 현재 대상 프레임워크 ".NETFramework,Version=v4.0,

Profile=Client"에 없는 "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=~"에 종속되어 있기 때문에 확인할 수 없습니다. 대상 프레임워크에 없는 어셈블리에 대한 참조를 제거하거나 프로젝트의 대상을 다시 지정하십시오.

라는 경고가 뜬다면,

프로젝트 속성에서 "대상 프레임워크"를 Client 버전에서 full 버전으로 변경해주면 된다.

(full 버전 framework는 무거워서... 일단 경고이므로... 저는 client 버전으로 개발 속행...

후에 문제생기면 재 포스팅 하겠습니다)

출처 : http://hippochart.tistory.com/411


만약(2), dll 추가후

warning MSB3276: 같은 종속 어셈블리의 서로 다른 버전이 충돌합니다. 프로젝트 파일에서 "AutoGenerateBindingRedirects" 속성을 true로 설정하십시오.

라는 경고가 뜬다면,

응용 프로그램의 구성 파일(App.config 또는 Web.config)에 바인딩 리디렉션을 추가하면 된다.

(아래 더보기를 참조하여, 동일한 색은 동일한 문구로 대체해야 한다)




참고) 연동 code


    using MySql.Data.MySqlClient;

    string MyConString = "SERVER=localhost; DATABASE=dbname; UID=userid; PASSWORD=passwd;";
    MySqlConnection connection = new MySqlConnection(MyConString);
    MySqlCommand command = connection.CreateCommand();
    MySqlDataReader Reader;
    command.CommandText = "select * from tablename";
    connection.Open();
    Reader = command.ExecuteReader();

    StringBuilder sb = new StringBuilder();

    while (Reader.Read())
    {
      string thisrow = "";
      for (int i = 0; i < Reader.FieldCount; i++)
              thisrow += Reader.GetValue(i).ToString() + ",";
      sb.AppendLine(thisrow);
    }
    connection.Close();

    return sb.ToString();

> 연동 code 출처는 기억이 안나네요 ^^; 포스팅할 생각을 못했을 때라...




윈폼 기본 컨트롤을 사용하다가 기본 컨트롤을 상속받아 재정의 해서 써야 할 일이 종종 있었다.

그냥 보통 구현의 경우 상관없지만, 생성자를 재정의(오버라이딩), 혹은 중첩정의(오버로딩) 할 경우

디자이너까지 손대야 하는데...


내 경우에는 매개변수가 있는 생성자를 써야 했기 때문에 디자이너를 건드렸고,

저장 직후 디자인이 이상 없이 보였으나, 다시 닫고 .designer.cs를 열었더니 알아서 뭔가 정리(?)가 되었고,

이 후에는 디자인이 제대로 열리지 않았다.


그래서 디자인을 열려고 하면


"디자이너 변수를 선언하거나 할당하지 않았습니다"


경고던가? 이 글귀와 함께 디자이너 에러....

스택 추적도 애매하고...


열심히 고민해 본 결과 원인은 .designer.cs의 자동 정리(?)에 있었다.


생성자가 필요할 때는 new로 실제로 할당할 때인데,

이걸 

InitializeComponent();

안에서 해줘야 하는데 에러인지 버그인지,

나는 분명 내부에서 할당해 준 것 같은데

외부에 선언될 때 new가 되어 있었다.


그래서 함수 내부에서 new 해주니 그때부터 이상없이 잘 작동.

'Programming > C#(with .NET)' 카테고리의 다른 글

ASP 0178 : 80070005 에러  (0) 2017.12.12
C#(WinForm)과 MariaDB(MySQL)의 연동  (0) 2015.04.03

+ Recent posts