asp net core 크로스플랫폼 초기 체험

3958 단어 ASP.NETCore
net core 설치
운영 환경: ubuntu 16.04 LTS
1. apt 소스 추가
순서대로 세 가지 명령을 집행하다
     sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/xenial main">/etc/apt/sources.list.d/dotnetdev.list'
     sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
     sudo apt-get update
2. 설치 수행
     sudo apt-get install dotnet-dev-1.0.4
3. 설치 결과 확인
명령을 집행하다
     dotnet --version
1.0.4 표시는 모든 것이 정상임을 나타낸다.
     
 
프로그램 작성
IDE:visual 스튜디오 community 2017 버전
웹 프레임워크: Nancy(nancy는 경량급이지만 기능이 매우 강한 웹 프레임워크로 상세하게 소개하지 않습니다.)
1. vs에 빈 asp. 새로 만들기netcore 웹 응용 프로그램
 
2. nuget 패키지 추가
기본 프로그램은 세 개의 패키지가 있습니다
우리는 응용 프로그램 insight를 사용할 수 없습니다. 지우고 microsoft를 추가합니다.aspnetcore.owin과 nancy 두 개의 패키지, 먼저 owin을 설치한 다음에 nancy를 설치합니다.
nancy가 aspnet core에 대한 지원이 아직 테스트 버전에 있으니, nancy를 검색하기 전에 nuget 패키지 관리자의 "미리 발행된 버전 포함"을 선택해야 합니다.
 
3. Program 수정cs 파일
우리가 필요로 하지 않는 코드를 삭제하다
public static void Main(string[] args)
  {  var host = new WebHostBuilder()
  .UseKestrel()
  .UseContentRoot(Directory.GetCurrentDirectory())//                  .UseIISIntegration()
  .UseStartup()//                   .UseApplicationInsights()  .Build();
 
  host.Run();
  }

4. Startup 수정cs 파일
using Nancy.Owin; //    nancy   owin   public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  {
  loggerFactory.AddConsole(); 
  if (env.IsDevelopment())
  {
  app.UseDeveloperExceptionPage();
  } 
//            ,      using Nancy.Owin;
 app.UseOwin(p => p.UseNancy()); 
/*      nancy   ,        
  app.Run(async (context) =>
  {
  await context.Response.WriteAsync("Hello World!");
  });
  }*/

5. nancy에 필요한 모듈 파일을 추가하고 본문에서 홈 모듈을 사용합니다.cs
public homeModule()
        {
            Get("/", p =>
            {                return View["index.html"];
            });
        }

ASp net mvc와 유사하게 nancy의module 파일 이름은nancy 검색view의 경로에 직접적인 영향을 미친다. 예를 들어 홈 모드, nancy는views/home/index를 검색한다.html 이 경로.물론 nancy 검색뷰를 수정하는 방법을 설정할 수도 있습니다.
사실nancy의 모든 구성 요소는 설정할 수 있고 심지어는 자신의 것으로 바꿀 수 있기 때문에 상당히 유연하다.
새로 만들기views/home/index.html 파일, 군말 없이 아무 말이나 쓴다.F5를 눌러 디버깅을 실행하면 됩니다.
두 가지 주의해야 할 게 있어요.
1. iis를 숙주로 실행하는 것이 아니기 때문에 (Program.cs 파일에서 UseIISintegration 코드를 삭제했습니다) vs 조회 방식에서 IIS Express를 선택할 수 없습니다. 프로젝트 이름을 선택하십시오.
2. 새로 추가된view 파일은 vs 출력 디렉터리에 복사되지 않아 오류가 발생하므로 출력 방식을 바꿔야 합니다.
 
ubuntu에 배포
프로젝트를 Release 모드로 바꾸고 vs의 프로젝트에 오른쪽 단추를 눌러서 '패키지' 명령을 선택하면 vs는 컴파일을 하고, 마지막으로 dll를bin\releaseetcore1로 컴파일합니다.목차
파일을 ubuntu에 업로드하기 전에 Hello에.runtimeconfig.dev.json이 수정을 했습니다. 이것은 큰 구덩이입니다. 마이크로소프트의 공식 강좌에서 이 구덩이를 언급하지 않았습니다.
이 파일의 내용은 매우 간단하다.
  "additionalProbingPaths": [
  "C:\\Users\\michael\\.nuget\\packages"
  ]
additional Probing Paths는nuget의 패키지 경로입니다. 우리는 win에서 개발했기 때문에%USERPROFILE%입니다.nuget\packages, ubuntu에 배치하기 전에/root/.nuget/packages
 
상기 파일을 scp나 ftp 등 도구를 통해 ubuntu에 전송합니다. 예를 들어/홈/웹/hello에 놓고 Ubuntu에서 실행합니다.
dotnet hello.dll
원격 서버에서만 사용 가능http://localhost:5000접근은 매우 불편합니다. 클라이언트에서 접근하려면 역방향 에이전트를 추가해야 합니다.
 
역방향 에이전트 추가
주류에 따라 우리는nginx를 선택한다
1.nginx 설치
apt install nginx를 실행합니다.군말을 하지 않다
2.nginx 구성
/etc/nginx/sites-available/default 파일을 편집합니다.
server {
  listen 80;
 
  location/{
  proxy_pass http://localhost:5000;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection keep-alive;
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
  }
}
3.nginx 실행
sudo 서비스nginx start를 실행합니다.
 
이제 클라이언트에서 http://서버 IP/를 사용하면 netcore가 ubuntu에서 실행하는 사이트를 볼 수 있습니다.

좋은 웹페이지 즐겨찾기