맥에서 Volta 노드 버전 관리자를 사용할 경우

React native를 사용 시 노드를 찾을 수 없다고 에러가 나는 경우

 

volta 사용 시

node bin 경로가 아래와 같이 변경되기 때문에

/Users/username/.volta/tools/image/node/16.13.1/bin/node

 

 

/usr/local/bin에 노드 심볼릭 링크를 생성해 주어야 한다.

ln -s $(which node) /usr/local/bin/node

'개발 > 에러해결' 카테고리의 다른 글

Electron setup SQLite 3  (1) 2019.09.21
라즈베리파이 3 먼지센서 PM1001 , UART 사용기  (1) 2016.10.01
IE8 JSON 데이터 다루기  (0) 2016.05.09

* 추후에 좀 더 자세하게 정리하겠습니다. 아래의 내용은 준비물과 간단한 절차입니다.

 

https://github.com/sviom/raincomeprbot

 

동기

회사에서 개발을 진행하면서, Bitbucket을 사용했는데 PR이 발생하면 알람을 주고 싶었습니다. 처음에는 기본적으로 제공하는 오피스 커넥터와 팀즈의 incoming webhook 커넥터를 이용하면 해결이 될 줄 알았는데, 해당 커넥터는 채널에 메시지 게시는 지원하지만 사용자의 멘션이나, 개개의 챗으로 알려주는 기능은 제공하지 않았습니다.

하여 두번째로 알아본 방법은 아틀라시안 마켓플레이스에서 팀즈 알림 관련 제품을 다운로드 및 설치 해보았습니다. 하지만 이 항목도 마찬가지로 채널에 메시지 게시만을 지원했습니다.

 

여러가지로 알아보다가, 서비스 중에 원티드스페이스(구 커먼스페이스)에서 퇴근 버튼을 누르면 팀즈에 봇을 이용하여 알람을 주는 것을 발견했습니다. 이 방법은 실제로도 사용되고 있고, 가능하겠다 싶어 개발을 진행하게 되었습니다.

 

준비물

  1. Azure 계정
  2. 외부에서 접근이 가능한 데이터베이스
  3. Office 365 계정 관리자 권한
  4. BOT Framework 대한 이해
  5. VS code 및 Teams tookkit(Extension)
  6. ngrok 대한 이해(옵션)
  7. Adaptive card 대한 이해(옵션)
  8. Graph API 대한 이해(옵션)

 

방법

  1. VS Code Teams Toolkit 설치
  2. 툴킷 항목으로 이동 - 우측에 Office 365 / Azure 로그인을 진행
  3. 툴킷을 이용해 생성
  4. https://dev.teams.microsoft.com/bots 접속(기존 Teams app stuio앱은 2022 1월부로 사용되지 않음) 해서 봇이 생성되었나 확인
  5. Azure AD - App registration에 App 만들어졌나 확인
  6. 구성(개발) 테스트
  7. Azure Privisioning
  8. Azure 배포(봇으로 노티를 보내려면 배포해서 endpoint를 알아야함)
  9. Teams 배포
  10. 팀즈 관리자에서 허용
  11. 팀즈에서 설치

도구

Visual Studio 2019 - 도구 - Nuget 패키지 관리자 - 패키지 관리자 콘솔을 사용했습니다.

 

내용

EF Core를 사용하면서, 모델이 변경되면 마이그레이션을 해서 DB에 적용을 해주어야 합니다.

하나의 프로젝트(API, Client 등)에 모델링 코드와 DbContext가 함께 있다면

Add-Migration [마이그레이션 Alias]
Update-Database

이 두 코드로 모두 해결이 되겠지만,

저의 경우에는 API용 프로젝트(.net5 mvc api)가 하나, 모델/뷰모델을 관리하는
프로젝트(.net5 클래스 라이브러리)가 따로 있습니다.

그래서 위의 마이그레이션 코드로 진행하려 하니, 모델이 변경된게 없어 빈 마이그레이션 파일만 생성되었습니다.

 

저의 경우처럼 별도의 프로젝트에 모델링이 있는 경우 등에는 이 링크 를 참고하시면 자세하게 보실 수 있고,

제가 해결한 방법은 아래와 같습니다.


순서

  1. Context파일(db context)을 라이브러리 프로젝트로 옮기기
  2. 데이터 모델파일들도 라이브러리 프로젝트로 옮기기
  3. Add-Migration, Update-database 등 DB적용 스크립트를 실행 할 때 -StartUpProject, -Project등 설정해주기

스크립트

마이그레이션 적용

Add-Migration [마이그레이션 이름]
-Project [클래스라이브러리프로젝트이름]
-StartupProject [실제웹어플리케이션프로젝트이름] 
-c [클래스라이브리이름.네임스페이스.Context이름]

 

데이터베이스에 적용

Update-Database 
-Project [클래스라이브러리프로젝트이름]
-StartupProject [실제웹어플리케이션프로젝트이름]
-Context [클래스라이브리이름.네임스페이스.Context이름]

 

✔ 위의 스크립트들은 보기 편하려고 여러줄에 걸쳐 사용했지만, 한 줄에 모아서 사용하는걸 추천합니다.

'개발 > ASP.NET Core' 카테고리의 다른 글

닷넷 코어 Connection String 사용하기  (0) 2017.03.11

Electron에서 Sqlite3 설치 시

 

스크립트

npm install sqlite3 --save

npm install electron-builder --save-dev

 

npm install

npm start -> Script에 [electron .] 이라고 정의됨

 

Package.json에 해야할 일

Script 밑에

"postinstall""electron-builder install-app-deps"

추가

 

실행

 

에러 해결 참조는 여기서 

https://www.youtube.com/watch?v=vKUVJHV3og4

 

SQLite 코드는 Main.js에 

const sqlite3 = require('sqlite3').verbose();

const db = new sqlite3.Database('./db/moneynode.db');

추가해서 확인하였습니다.

Visual studio 2019, Windows 10, Xamarin 3.6 ver.

 

  1. 프로젝트 마우스 오른쪽 클릭
  2. 번들 서명
  3. 사용자 지정자격에 Entitlements.plist 파일을 직접 넣어주어야 한다.
  4. 자동 서명일 경우 현재 되지 않고 있음.
*먼저 해당 블로그에서 참고하여 테스트 후 글을 작성하였습니다. 참고바랍니다.


ASP.NET Core 웹 어플리케이션에서는 기존의 닷넷 프레임워크와는 다르게 설정파일을 작성합니다.

기존의 닷넷 프레임워크 웹 어플리케이션에서는 IIS에서만 동작하기 때문에 SQL Server와의 통신을 위해

Web.Config파일을 통해 Connection String을 작성하고 사용하였는데,

닷넷 코어 웹 어플리케이션에서는 여러 플랫폼 위에서 동작하기 때문에 다른 방식을 사용하였습니다.


현재 docs.microsoft.com 에서는 SQL Server와의 연결을 위해 EntityFrameworkCore를 추가해

DBContext를 추가하는 방식으로 소개하고 있습니다.

(닷넷 코어에서는 사용하고 싶은게 있으면 일일이 찾아서 누겟으로 추가해 주어야 합니다....)


저는 EntityFramework를 사용하고 싶지 않아 이렇게 하는게 아닌 다른 방식을 찾아보았습니다.

하여 위의 블로그에서 찾아본 방법을 소개합니다.

생성자를 이용하는 방식이기 때문에 추후 해당 방식이 아닌 다른 방식으로 사용할 수 있는 방법이 있으면

추가로 포스팅을 진행하겠습니다.


진행하시기 전에 

"Microsoft.Extensions.Options.ConfigurationExtensions"

NugetPackage를 설치하셔야 합니다.

패키지 설치 후 appsettings.json 파일에 Connection String관련 내용을 추가합니다.




위의 Logging은 프로젝트 생성 시 WebAPI이나 MVC 템플릿으로 생성 시 자동으로 들어가 있습니다.

밑의 AppSetting 노드를 추가하고 Connection String 내용을 추가합니다.


프로젝트의 루트에 AppSettings 클래스를 추가합니다.



클래스 내부의 내용을 위에서 추가한 appsettings.json의 이름과 동일하게 작성합니다.




Startup.cs에 appsetting.json에서 AppSettings 노드를 찾아 해당 내용을 가져와 추가합니다.




추가 후 Startup.cs에 appsettings.json 파일을 가져오는 부분이 누락되었나 확인합니다.



내용 추가가 완료된 startup.cs 파일 내용입니다. 저는 WebAPI 템플릿으로 프로젝트를 생성하였기 때문에

mvc 관련 내용들도 기본으로 추가되어 있습니다.


컨트롤러에 AppSetting을 프로퍼티로 가져옵니다.



컨트롤러 생성자에 해당 세팅을 IOption으로 가져와 값을 설정해 줍니다.



해당 컨트롤러의 생성자로 진입 시 값이 들어오는 것을 확인하실 수 있습니다.



해당 연결 문자열으로 DB 서버 연결 등에 사용하시면 됩니다.


내용을 보시고 이러면 안될 것 같은데, 다른 좋은 방법이 있는데 하시는 분들은 의견 주시면 수정하도록 하겠습니다.

라즈베리파이에 온/습도 센서인 DHT-11은 GPIO핀에 그냥 꽂고, 기존에 퍼져있는 Adafruit의 라이브러리를 사용하니

금방 해결되었습니다. 하지만 먼지 센서인 PM1001은 자료가 별로 없었습니다. 심지어 영어로된 자료 조차도....

한글로 포스팅하신 분이 한분 계셨는데 그나마 파이썬이 아닌 C언어로 짜셨고, WiringPi 라이브러리를 사용하셨네요.

해당 블로그로 이동


저는 무조건 파이썬으로 해결하고 싶어서 그냥 뛰어들었습니다. 운영체제는 라즈베리안이 아닌 Ubuntu Mate입니다.

PM1001 센서를 라즈베리파이3에 연결하고 사용하기 위해서는

1. 물리적인 핀 연결

2. 코드 상의 시리얼 확인, 포트 확인

3. 신호를 주고 받아 데이터가 제대로 나오는지 확인

4. 데이터를 실제 사용되는 단위로 변환


해야 합니다.


먼저 주의 해야 할 점은 PM1001은 UART 통신을 합니다.  UART 통신이란?

시리얼 통신입니다. 센서에서 나오는 TX, RX 핀의 경우 5V로 나오지만 라즈베리파이에서 나오는 TX, RX핀의 경우 3.3V입니다.

이 상태 그대로 연결했다가는 전압의 차이로 인해 얼마 못가서 라즈베리파이가 망가질 확률이 높습니다.

이 상황을 해결하기 위해 나온 물건이 "레벨 컨버터"라고 있지만, 너무 비싸서.... 그냥 저항 분압을 사용하기로 합니다.

네이버지식인이지만설명이있는 저항분압이란?
저항과 핀을 연결해서 전압을 다운시키는 방법입니다.



1. 핀을 연결하는 방법은 다음과 같습니다. 제가 만든 것이 아니라 링크로 대체합니다. 사진보기

주의해야 할 점은 저항은 1Kohm 이상을 사용하셔야 합니다.


2. 핀을 다 연결하신 후에는 라즈베리파이에서 센서를 제대로 인식을 하는지 확인해야 합니다.

저는 파이썬을 이용하기로 했으니, 다음과 같이 입력해 현재 연결되어있는 포트를 확인합니다.

"python -m serial.tools.list_ports"

아무 설정도 하지  않고 포트 확인을 했을 경우 "/dev/ttyAMA0"가 나옵니다. 실제로도 사용하는 포트는 이 포트입니다.

설명서에는 pyserial을 사용해서 해당 포트로 특정 값을 보내라고 나와 있습니다. 설명서1 설명서2


하지만 실제로 해보면 아무 반응도 오지 않습니다. 이 부분에서 헤매다가 찾아보니 원인은 라즈베리파이에 있었습니다.

관련링크1    관련링크2    관련링크3


라즈베리파이3는 와이파이와 블루투스 모듈이 내장되어 있습니다. 라즈베리파이2 까지는 없던 항목입니다.

하여 UART 통신 관련 기능을 찾아보면 cmdline.txt에서 tty관련 항목을 제거하라는 부분이 있는데 우분투 때문인지는 확인하지 못했지만

라즈베리파이3에서는 관련 항목이 존재하지 않습니다. *해당항목은 확인 후 수정하겠습니다.


원인은 내장 블루투스 였습니다. 내장 블루투스가 "/dev/ttyAMA0" 포트를 차지하고 있어 해당 포트를 사용해도 아무 반응이 없습니다.

그래서 내장 블루투스를 죽이고 해당 포트를 사용하는 방법이있습니다.  위의 관련링크1 에 해당 방법이 존재합니다.


The latest emonSD for emonPi / emonBase seemed to work out of the box with the RasPi3, however it became apparent that something rather important was missing...serial comms with the emonPi's ATmega328!

The emonPi communicates with the RasPi via GPIO 14/15 which on the Model B,B+ and Pi2 is mapped to UART0. However on the Pi3 these pins are mapped to UART1 since UART0 is now used for the Bluetooth module. However UART1 is software UART and baud rate is dependent to clock speed which can change with the CPU load, under voltage and temperature; therefore not stable enough. One hack is to force the CPU to a lower speed ( add core_freq=250 to /boot/cmdline.txt)which cripples the Pi3 performance.

A better solution for the emonPi is to disable BT and map UART1 back to UART0 (ttyAMA0) so we can talk to the emonPi in the same way as before.

First update:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update

To disable onboard Pi3 Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15 modify:

sudo nano /boot/config.txt

Add to the end of the file

dtoverlay=pi3-disable-bt

We also need to run to stop BT modem trying to use UART

sudo systemctl disable hciuart

See RasPi device tree commit for pi3-disable-bt and raspi forum thread discussion.

Reboot and test serial coms with:

sudo minicom -D /dev/ttyAMA0 -b38400



입니다. 해당 방법을 적용한 후에 다시 신호를 보내면 정상 작동합니다.

이로써 시리얼 포트에 관련된 에러는 해결 했습니다. 이제 파이썬으로 코드를 작성하고, 변환하는 일이 남았습니다.


너무 길어서 파트2에서 쓰도록하겠습니다.

'개발 > 에러해결' 카테고리의 다른 글

Volta sh + React native 사용 시 Node버전  (0) 2022.01.07
Electron setup SQLite 3  (1) 2019.09.21
IE8 JSON 데이터 다루기  (0) 2016.05.09

* 2019.02.13 Update 되었습니다.


UWP 앱을 제작하면서 디자이너 분이 계시면 상관없겠지만 혼자 개발하시는 분들은

이미지 관련된 부분은 어려우실 때가 많을 것이라고 생각합니다.


특히 앱의 얼굴인 타일은 타일의 크기에 따라 다양하게 설정해야합니다.

링크: MS의 타일 및 아이콘에 대한 가이드라인


그래서 타일과 관련된 것을 검색하던 도중 좋은 확장툴을 발견했습니다.


UWP Tile Generator입니다.

다운로드: https://visualstudiogallery.msdn.microsoft.com/09611e90-f3e8-44b7-9c83-18dba8275bb2

Visual Studio 2017 적용 버전 링크 [추가됨]

소스코드: https://github.com/shenchauhan/UWPTileGenerator


이미지를 Asset 폴더에 올리고 마우스 클릭 한번에 스플래시와 타일이미지를 전부 생성, 적용시켜줍니다.



이런식으로 파일을 넣어놓은 후 "Generate UWP Tiles"를 누르면면 한번에 생성, 적용됩니다.



SVG파일 포맷도 지원합니다. 너무 간단해서 소개할 내용이 별로 없네요...



'개발 > UWP' 카테고리의 다른 글

UWP에서 SQLite 사용하기  (0) 2016.07.26
윈도우10 UWP App에서 HTTP 서비스 사용하기  (0) 2016.04.27

UWP 어플리케이션을 제작 할 때 SQLite를 사용하고 싶은 때가 있습니다.

무료이기도 하고, 파일하나에 넣으니 로컬로 사용하기도 편합니다.

저도 UWP어플리케이션을 제작하고 있는데, 해당 프로젝트에서 SQLite를 사용하는 방법을 적어봅니다.


순서입니다.

  1. NuGet Package로 SQLite for Universal Windows Platform 을 설치합니다.(Visual studio 2015기준입니다)
    https://visualstudiogallery.msdn.microsoft.com/4913e7d5-96c9-4dde-a1a1-69820d615936
  2. NuGet Package로 SQLite-net PCL 또는 SQLite.Net PCL을 설치합니다. 방금 소개해드린 두개의 패키지는 SQLite에서 제공하는 것이 아니라
    Third-party package입니다. SQLite를 좀더 쓰기 쉽게 도와줍니다.
    https://www.nuget.org/packages/sqlite-net-pcl/
    https://www.nuget.org/packages/SQLite.Net-PCL/
  3. 클래스 파일 등에서 SQLite를 사용합니다.


1번, 2번을 설치하고 나면 참조 추가로 패키지를 추가해 줍니다.




참고 추가를 완료하였으면 사용하기 원하는 cs파일에서



SQLite 네임스페이스를 추가줍니다. System.IO와 Windows.Storage는 로컬 파일을 다루는데 많이 사용되므로 추가하시면 좋습니다.

네임스페이스를 추가하셨으면 SQLite를 사용할 준비가 되었습니다.

'개발 > UWP' 카테고리의 다른 글

UWP 타일 생성기  (0) 2016.07.29
윈도우10 UWP App에서 HTTP 서비스 사용하기  (0) 2016.04.27

Dynamics CRM을 사용하다 보면 자동으로 저장되는 기능이 있습니다.

해당 파일의 아이콘으로, 브라우저 우측 하단에 존재합니다.

저장버튼을 누르지 않아도 되고, 데이터가 날라갈 위험이 적어서 좋지만

가끔은 저장되면 안되는 상황이 있을 때가 존재합니다. 그러한 때를 위해 MS에서는 자동저장 방지 기능을 스크립트로도 제공합니다.

링크: https://msdn.microsoft.com/en-us/library/gg509060.aspx


해당 기능을 사용하기 위해서는

1. 스크립트를 만들어 CRM에 등록시켜주기

2. 스크립트 onSave이벤트 만들기

3. onSave 이벤트에 CRM에서 매개변수 넘겨주는 항목에 체크하셔야 스크립트를 사용하실 수 있습니다.


1. 스크립트를 만들어 CRM에 등록시켜주기

- CRM 화면 - Form Editor - Form Property - Event - 항목에서 등록하실 수 있습니다.

-

- 파일 추가 후 이벤트 핸들러의 OnSave이벤트에 상단에서 만든 자바스크립트 함수를 걸어줍니다.

- 이벤트를 걸어줄 때


" Pass execuction context as first parameter " 항목에 반드시 체크해주셔야 합니다.

- 항목에 체크 후 이벤트를 걸어 준 다음


 
function onSave(econtext)
{
    var eventArgs = econtext.getEventArgs();

    // 자동저장/저장&닫기/저장/저장&새로
    if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2 || eventArgs.getSaveMode() == 1 || eventArgs.getSaveMode() == 59)
    {
        // 다른 페이지로 넘어가지 못하게 한다.
        eventArgs.preventDefault();
    }
}


이러한 형태로 스크립트를 수정해 줍니다.


해당 스크립트 완성 및 배포 후에 저장하려고 보면 페이지를 유지할 것인지 데이터 손실을 감수하고 나갈 것인지에 대한

Alert 메시지가 나타납니다.


이벤트 Save 모드에 대해서는 MSDN을 참고하세요.

찾은 결과물1.

http://stackoverflow.com/questions/8306294/script438-object-doesnt-support-property-or-method-keys-for-ie/16183419

2.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys


자바스크립트에서 JSON데이터를 다룰 때 IE8에서 동작해야 하는지 체크해야 할 때가 있다.

싫지만...

어찌되었든 핸들링해야 할 때 JSON 데이터의 개수를 가져와야 할 때가 있는데


IE11이나 다른 브라우저에서는 제공하지만 IE8에서는 제공하지 않는 Object.Keys라는 함수가 있다.

그래서 해당 함수를 추가해 주어야 한다.


 if (!Object.keys) {
  Object.keys = (function () {
    var hasOwnProperty = Object.prototype.hasOwnProperty,
        hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
        dontEnums = [
          'toString',
          'toLocaleString',
          'valueOf',
          'hasOwnProperty',
          'isPrototypeOf',
          'propertyIsEnumerable',
          'constructor'
        ],
        dontEnumsLength = dontEnums.length;

return function (obj) {
      if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');

var result = [];
for (var prop in obj) {
        if (hasOwnProperty.call(obj, prop)) result.push(prop);
      }
if (hasDontEnumBug) {
        for (var i=0; i < dontEnumsLength; i++) {
          if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);
        }
      }
      return result;
    }
  })()
};


MS 에서 제공하는 도움말

https://www.microsoft.com/ko-kr/dynamics/crm-customer-center/export-your-customizations-as-a-solution.aspx


https://msdn.microsoft.com/library/gg334576.aspx


Unmanaged Solution 과 Managed Solution의 차이

비관리형 솔루견과 관리형 솔루션의 차이


1. 관리형 솔루션

- 배포 및 설치를 할 수 있는 완전한 솔루션일 떄 사용

- 시스템 솔루션 위에 설치됨.

- 어떠한 맞춤 솔루션 요소나 여러 솔루션 요소를 더할 수 있다.

- 다른 관리형 솔루션 위에도 올라갈 수 있다.

- 관리형 솔루션의 구성 요소들이 수정 가능한 동안에는 다른 관리형 솔루션도 그 구성요소들을 수정할 수 있다.

- 다른 CRM에서 관리형 솔루션을 가져왔을 때 그 솔루션을 직접 수정할 수 없다.

2. 비관리형 솔루션

- 아직 개발중이거나 배포할 상태가 아닌 솔루션일 때 사용

- 비관리형 솔루션이 완전해지거나, 설치를 원할 때 관리형 솔루션으로 내보낼 수 있음.

- 비관리형 솔루션은 관리되지 않은 커스텀 요소들의 모음

- 어떠한 커스텀된 비관리형 솔루션 또한 다른 비관리형 솔루션과 연동될 수 있습니다.



Solution layeringhttps://i-msdn.sec.s-msft.com/dynimg/IC786853.png


'개발 > DynamicsCRM' 카테고리의 다른 글

자동 저장 방지.  (0) 2016.05.30
Dynamics CRM XRM SDK 이용 CRM과 통신하기1  (0) 2016.01.18

윈도우10에서 사용 가능한 UWP 어플리케이션 제작 시

웹 서비스를 사용해야 할 일이 있습니다. 그럴 때는 HTTP 프로토콜을 사용해야 하는데

기본으로 제공되는 라이브러리를 사용하는 방법입니다.


1. GET


먼저 어디서 웹서비스를 이용할지 Uri를 설정합니다.

그 후 HttpClient 클래스를 생성합니다.

생성한 "client"에서 먼저 생성한 Uri로 서비스를 가져옵니다. 이때는 Get 방식입니다.

HttpResponseMessage를 리턴 값으로 받습니다.

받은 메시지에서 문자열(Content)를 읽어내서 사용합니다.

'개발 > UWP' 카테고리의 다른 글

UWP 타일 생성기  (0) 2016.07.29
UWP에서 SQLite 사용하기  (0) 2016.07.26

Dynamics CRM과 다른 사이트 간의 통신

MS Dynamics CRM에서 XRM SDK를 이용하여 CRM Online 및 On-Premise에 있는 데이터를

다룰 수 있다.

이 분야에서 제일 좋은 참고 자료인 MSDN Sample 링크를 첨부합니다.

1. SOAP를 이용한 QueryAttribute이용

Sample: https://msdn.microsoft.com/en-us/library/gg334708.aspx

2. QueryExpression 이용

Sample2: https://msdn.microsoft.com/en-us/library/gg328149.aspx


순서는 이렇습니다.

1. CRM SDK를 다운받습니다.

Link: https://www.microsoft.com/en-us/download/details.aspx?id=50032

2. SDK를 풀면 Bin 폴더 안에 XRM 관련 DLL들 파일이 있습니다. 해당 파일들을 프로젝트에 참조추가합니다.




추가할 DLL은 XRM.SDK / XRM.SDK.Workflow / SDK.Proxy 입니다. Deployment는 아직 사용할 일이 없습니다.


3. 웹서비스를 이용합니다. SOAP를 사용하므로 웹폼에서는 꼭 만들어야 합니다.

Razor를 사용하는 MVC패턴에서는 테스트를 하지는 않았지만 특성상 안만들어도 되지 않을까.. 생각합니다.



4. 웹서비스 파일에 위의 샘플코드를 가져와 자신의 CRM에 맞게 적당히 수정 후 사용합니다.




주의 할점은 통신을 위해 AJAX같은 스크립트 기반 기술을 사용할 경우 드래그한 부분인

[System.Web.Script.Services.ScriptService] 를 반드시 주석 해제하고 사용합니다.


'개발 > DynamicsCRM' 카테고리의 다른 글

자동 저장 방지.  (0) 2016.05.30
Dynamic crm 2016 솔루션/관리형비관리형 내보내기  (0) 2016.05.02

+ Recent posts