학습 사이트 (1장 이후는 유료임...)
d3.js의 API 문서 번역(전체가 아닌 API 문서만 번역)
학습 사이트 (1장 이후는 유료임...)
d3.js의 API 문서 번역(전체가 아닌 API 문서만 번역)
ASP.NET Web API GET요청시 JSON 포맷으로 무조건 리턴 받게 하는 방식이다.
JsonMediaTypeFormatter를 이용해서 Employee 객체를 무조건 JSON으로 직렬화시켜서
응답으로 내보내게 된다.
public HttpResponseMessage Get(int id)
{
var employee = list.FirstOrDefault(e => e.Id == id);
return new HttpResponseMessage()
{
Content = new ObjectContent<Employee>(employee,
Configuration.Formatters.JsonFormatter)
};
}
C#에서 Excel파일을 생성하기 위해서 UTF-8로 지정을 해야지 파일이 깨지지 않는다
엑셀 dll을 사용하는 것이 아니라 XML 스프레드시트 형태로 만들어서 xls 확장자로
저장하는 형태이다.
string excel = header.ToString() + styles.ToString() + title.ToString() + content.ToString() + footer.ToString();
context.Response.ContentType = "application/excel";
context.Response.AddHeader("Content-disposition", "attachment; filename=\"report.xls\"");
HttpContext.Current.Response.BinaryWrite(UTF8Encoding.UTF8.GetBytes(excel));
IIS에서 웹 사이트를 새로 생성하고 파일 경로를 설정한 이후 부터 설명 하겠다.
자꾸 잊어버리네
1. ASP.NET 4 사용 설정
.NET Framework 4를 설치하면, IIS의 Web Service Extensions 4가 등록 되어있지만 기본 값이 "금지(Prohibited")로 설정되어있다.
ASP.NET v4.0.30319 라인에서 우클릭을 하고 "허용(Allowed)"를 선택한다.
2. 와일드카드 맵 추가
Web-Forms 어플리케이션을 구성한 다음에는 어플리케이션이 실행이 될 것이다. 하지만 MVC 어플리케이션으로 개발을 하였다면 마지막 한가지 단계가 더 해야한다. 추가한 어플리케이션을 위한 와일드카드 맵(Wildcard map)을 추가할 필요가 있다.
IIS로 돌아가서 웹 사이트에서 우클릭을 한 후 "속성" -> "홈 디렉토리" -> "구성" 을 선택한다.
아래 부분에 와일드카드 응용 프로그램 매핑(Wildcard Application maps) 설치된 리스트를 볼 수 있다. 그런데 비어 있을 것이다. 여기서 "삽입(Insert)" 버튼을 클릭한다.
응용 프로그램 확장 매핑 추가 / 편집 대화창이 나타난다. 실행파일(Excutable) 텍스트 입력 필드에 ".NET Framework 4.0 isapi-extension" 보통 c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
경로를 입력한다. 그리고 파일이 있는지 확인("Verify that file exist") 체크 박스의 체크를 해제한다.
확인("OK") 버튼을 클릭하면 대화창이 닫힌다.
이제 MVC4 어플리케이션을 실행에 대한 설정은 모두 준비 되었다.
참조 블로그 : http://sde03.azurewebsites.net/?p=3101
새로운 MVC 프로젝트를 개발하면서 이번에는 MySql DB 서버와 연동을 하게 되었다.
- VisualStudio 2012
- .NET Framework 4.0, ASP.NET MVC4, EntityFramework 6
저번에도 한번 진행을 하였으나 MySql의 버전이 너무 낮은 관계로 MysqlClient가 아닌 ODBC로 연동을 할 수 밖에 없었다. (http://whiteblank.tistory.com/trackback/138 참고)
MySql에서 프로시저까지 만들어준다면야 땡큐~ 지만 그렇게 해줄 가능성은 매우 희박하다. 그리고 MSSQL에 동일 테이블을 생성하여 Job을 통해 특정시간마다 데이터를 가져와서 해당 DB를 액세스 하여 사용할 수 있지만 아직 결정된 부분이 없기 때문에 아래 두가지 경우를 생각하게 되었다.
첫번째, MSSQL에서 Linked Server로 Mysql를 Openquery로 데이터를 끌어와 프로시저를 만든 이후 웹서버에서 MSSQL의 프로시저를 호출
두번째, 웹서버에서 직접적으로 쿼리문을 사용하여 데이터를 가져오는 방식
어떠한 방법이 좋을까 생각하다가 두번째 방법을 사용하기로 했다.
그러면 프로젝트를 어떻게 설정해야할까!!
1. NuGet 패키지에서 MySql DLL을 추가한다.
# MySql 관련 dll은 Entity Framework6 이상만 지원한다!!!!
2. Web.config 설정
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> </entityFramework> |
<connectionStrings> <add name="conn" connectionString="Data Source=; Initial Catalog=;User ID=; Password;" providerName="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken="c5687fc88969c44d" /> </connectionStrings> |
<system.data> <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data> |
3. MySql DB Context 정의
MyDbContext.cs 추가
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyContext : DbContext
{
public MyContext()
: base("conn")
{ }
}
4. Data Access
public ActionResult Index()
{
using (var context = new MyContext())
{
List<MerchantModels> list = context.Database.SqlQuery<MerchantModels>("SELECT * FROM TB_DISCOUNT_MERCHANT").ToList();
}
return View();
}
이렇게 하면 MySql의 테이블에 접근이 가능해진다.
우선 내가 급하게 사용을 해야하기 때문에 설명보다 내가 작성한 코드를 우선적으로 써내려왔다.
4xx Client Error | ||
400 | Bad Request | 클라이언트의 잘못된 요청으로 처리할 수 없음 |
401 | Unauthorized | 클라이언트의 인증 실패 |
402 |
Payment required |
예약됨 |
403 | Forbidden | 접근이 거부된 문서를 요청함 |
404 | Not found | 문서를 찾을 수 없음 |
405 | Method not allowed | 리소스를 허용안함 |
5xx Server Error | ||
500 | Internal Server Error | 내부서버 오류 (잘못된 스크립트 실행시) |
501 |
Not Implemented | 클라이언트에서 서버가 수행할 수 없는 행동을 요구함 |
502 | Bad Gateway | 서버의 과부하 상태 |
503 | Server Unavailable | 외부 서비스가 죽었거나 현재 멈춤 상태 |