최소한으로 구성된 웹 API를 Sitecore XM/XP 10.2에 추가하는 방법
시스템 요구 사항
대상 고객
준비
NuGet 패키지 소스에 Sitecore 추가
Visual Studio 구성을 엽니다.
Sitecore
를 입력하고 소스https://sitecore.myget.org/F/sc-packages/api/v3/index.json
를 입력합니다.Update
OK
을 클릭합니다.그게 다야.
완전한 저장소
다음은 완성된 소스이므로 바로 빌드하고 사용해 볼 수 있습니다.
https://github.com/nnasaki/SimpleWebApi
새로운 솔루션을 만드는 단계
새 솔루션 만들기
ASP.NET Web Application(.NET Framework)
를 선택합니다. ASP.NET Core가 아닙니다.
프로젝트 이름을 입력합니다. 프레임워크가 .NET Framework 4.8
인지 다시 확인하십시오.
프로젝트 유형으로 Empty
를 선택합니다. 오른쪽에 있는 모든 확인란의 선택을 취소합니다.
Create
를 눌러 새 솔루션 및 프로젝트 생성을 마칩니다.
NuGet 패키지 추가
Visual StudioTools
에서 Package Manager Console
아래의 Nuget Package Manager
를 클릭합니다.
화면 하단에 Package Manager Console
가 나타나면 Install-Package Sitecore.Services.Infrastructure
!
If you see Successfully installed
like this, it is successful. It took about 2 minutes in my environment.
컨트롤러 추가
Controllers
의 폴더 추가 및 클래스 추가
SimpleWebApiController
를 입력하고 추가를 클릭합니다.
다음 코드를 입력하세요
using Sitecore.Services.Infrastructure.Web.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace SimpleWebApi.Controllers
{
// TODO Be sure to narrow down the CORS settings in the production environment. This is all allowed.
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class SimpleWebApiController : ServicesApiController
{
public SimpleWebApiController()
{
}
[HttpGet]
public string Stats()
{
return "ok SimpleWebApi";
}
}
}
경로 정의 추가
컨트롤러와 동일한 절차입니다. Pipelines
폴더를 추가하고 RegisterHttpRoutes
클래스를 추가합니다.
다음 코드를 입력하세요
using System.Web.Http;
using Sitecore.Pipelines;
namespace SimpleWebApi.Pipelines
{
public class RegisterHttpRoutes
{
public void Process(PipelineArgs args)
{
GlobalConfiguration.Configure(Configure);
}
protected void Configure(HttpConfiguration configuration)
{
var routes = configuration.Routes;
routes.MapHttpRoute("SimpleWebApi.stats", "api/simplewebapi/stats", new
{
controller = "SimpleWebApi",
action = "Stats"
});
}
}
}
구성을 추가합니다.
계층적 폴더App_Config\Include\ZZZZZ_CustomConfigs
를 만들고 SimpleWebApi.config
를 추가합니다.
다음 설정을 입력하십시오
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"
xmlns:set="http://www.sitecore.net/xmlconfig/set/"
xmlns:role="http://www.sitecore.net/xmlconfig/role/">
<sitecore>
<pipelines>
<initialize>
<processor
type="SimpleWebApi.Pipelines.RegisterHttpRoutes, SimpleWebApi" />
</initialize>
</pipelines>
</sitecore>
</configuration>
배포
빌드된 모듈 배포
bin에 dll 추가
프로젝트SimpleWebApi.dll
에서 생성된 bin
를 IIS의 C:\inetpub\wwwroot\sitecoresc.dev.local\bin
에 복사합니다. 환경에서 sitecoresc.dev.local
부분을 다시 작성하십시오.
!
포함할 구성 추가
SimpleWebApi.config
를 프로젝트에 추가하여 C:\inetpub\wwwroot\sitecoresc.dev.local\App_Config\Include\ZZZZZ_CustomConfigs
에 복사합니다.
작동 확인
API에 액세스
브라우저를 사용하여 Sitecore가 배포된 사이트에 액세스합니다.
이 예에서는 https://sitecoresc.dev.local/api/simplewebapi/stats
에 액세스하여 확인합니다.
배포에 성공하면 아래와 같이 간단한"ok SimpleWebApi"
이 표시됩니다.
오류가 발생하면 문제 해결을 참조하십시오.
요약
이 기사에서 보듯이 Sitecore는 쉽게 사용자 정의할 수 있으므로 사용해 보십시오.
문제 해결
다음은 시도하는 동안 발생한 오류와 처리 방법에 대한 요약입니다.
이름이 'MinimumTest4'인 컨트롤러와 일치하는 유형을 찾을 수 없습니다.
오류 정보.
{"Message": "No HTTP resource was found that matches the request URI 'https://sitecoresc.dev.local/api/minimumtest4/stats'." , "MessageDetail": "No type was found that matches the controller named 'MinimumTest4'"}
해결책.
두 가지 패턴이 있습니다.
1. MapHttpRoute에서 컨트롤러 이름이 잘못 설정되었습니다.
컨트롤러 이름이 올바른지 확인하십시오. MinimumTest4Controller
가 컨트롤러 이름인 경우 MinimumTest4
없이 최대 Controller
까지 지정합니다.
2. optimizeCompilations="true"는 Web.config에서 활성화됩니다.
Web.config에서 <compilation defaultLanguage="c#" debug="true" targetFramework="4.8" optimizeCompilations="true">
를 다음과 같이 설정합니다. If optimizeCompilations
is true
, set optimizeCompilations="false"
.
optimizeCompilations
는 모듈을 업데이트할 때 다시 로드 속도를 높일 수 있는 기능이지만 새 파이프라인 프로세서가 인식되지 않을 수 있습니다. 일반적으로 false
로 설정하는 것이 좋습니다.
'MinimumTestApi.stats'라는 경로가 이미 경로 컬렉션에 있습니다. 경로 이름은 고유해야 합니다.
오류 정보.
Server Error in '/' Application.
A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
해결책
MapHttpRoute
의 정의 이름이 다른 모듈에서 공유됩니다. MapHttpRoute
에서 RegisterHttpRoutes.cs
의 정의 이름을 변경합니다.
"'MinimumTestApi'라는 컨트롤러와 일치하는 여러 유형이 발견되었습니다.
오류 정보.
{"Message": "An error has occurred.", "ExceptionMessage": "Multiple types were found that match the controller named 'MinimumTestApi'. This can happen if the route that services this request ('api/minimumtest3/stats') found multiple controllers defined with the same name but differing namespaces, which is not supported. \r\n\r\nThe request for 'MinimumTestApi' has found the following matching Controllers:\r\nMinimumTest.Controllers.MinimumTestApiController\r\nMinimumTest.Controllers.MinimumTestApiController", "ExceptionType": "System.InvalidOperationException", "StackTrace":"" at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.SelectController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}
해결책.
다른 모듈과 중복된 컨트롤러 클래스 이름이 있기 때문에 이름 확인이 작동하지 않습니다. 컨트롤러 클래스 이름을 다른 이름으로 변경하십시오.
Reference
이 문제에 관하여(최소한으로 구성된 웹 API를 Sitecore XM/XP 10.2에 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nnasaki/how-to-add-a-minimally-configured-web-api-to-sitecore-xmxp-102-256
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
새 솔루션 만들기
ASP.NET Web Application(.NET Framework)
를 선택합니다. ASP.NET Core가 아닙니다.프로젝트 이름을 입력합니다. 프레임워크가
.NET Framework 4.8
인지 다시 확인하십시오.프로젝트 유형으로
Empty
를 선택합니다. 오른쪽에 있는 모든 확인란의 선택을 취소합니다.Create
를 눌러 새 솔루션 및 프로젝트 생성을 마칩니다.NuGet 패키지 추가
Visual Studio
Tools
에서 Package Manager Console
아래의 Nuget Package Manager
를 클릭합니다.화면 하단에
Package Manager Console
가 나타나면 Install-Package Sitecore.Services.Infrastructure
!If you see
Successfully installed
like this, it is successful. It took about 2 minutes in my environment.컨트롤러 추가
Controllers
의 폴더 추가 및 클래스 추가SimpleWebApiController
를 입력하고 추가를 클릭합니다.다음 코드를 입력하세요
using Sitecore.Services.Infrastructure.Web.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace SimpleWebApi.Controllers
{
// TODO Be sure to narrow down the CORS settings in the production environment. This is all allowed.
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class SimpleWebApiController : ServicesApiController
{
public SimpleWebApiController()
{
}
[HttpGet]
public string Stats()
{
return "ok SimpleWebApi";
}
}
}
경로 정의 추가
컨트롤러와 동일한 절차입니다.
Pipelines
폴더를 추가하고 RegisterHttpRoutes
클래스를 추가합니다.다음 코드를 입력하세요
using System.Web.Http;
using Sitecore.Pipelines;
namespace SimpleWebApi.Pipelines
{
public class RegisterHttpRoutes
{
public void Process(PipelineArgs args)
{
GlobalConfiguration.Configure(Configure);
}
protected void Configure(HttpConfiguration configuration)
{
var routes = configuration.Routes;
routes.MapHttpRoute("SimpleWebApi.stats", "api/simplewebapi/stats", new
{
controller = "SimpleWebApi",
action = "Stats"
});
}
}
}
구성을 추가합니다.
계층적 폴더
App_Config\Include\ZZZZZ_CustomConfigs
를 만들고 SimpleWebApi.config
를 추가합니다.다음 설정을 입력하십시오
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"
xmlns:set="http://www.sitecore.net/xmlconfig/set/"
xmlns:role="http://www.sitecore.net/xmlconfig/role/">
<sitecore>
<pipelines>
<initialize>
<processor
type="SimpleWebApi.Pipelines.RegisterHttpRoutes, SimpleWebApi" />
</initialize>
</pipelines>
</sitecore>
</configuration>
배포
빌드된 모듈 배포
bin에 dll 추가
프로젝트
SimpleWebApi.dll
에서 생성된 bin
를 IIS의 C:\inetpub\wwwroot\sitecoresc.dev.local\bin
에 복사합니다. 환경에서 sitecoresc.dev.local
부분을 다시 작성하십시오.!
포함할 구성 추가
SimpleWebApi.config
를 프로젝트에 추가하여 C:\inetpub\wwwroot\sitecoresc.dev.local\App_Config\Include\ZZZZZ_CustomConfigs
에 복사합니다.작동 확인
API에 액세스
브라우저를 사용하여 Sitecore가 배포된 사이트에 액세스합니다.
이 예에서는 https://sitecoresc.dev.local/api/simplewebapi/stats
에 액세스하여 확인합니다.
배포에 성공하면 아래와 같이 간단한"ok SimpleWebApi"
이 표시됩니다.
오류가 발생하면 문제 해결을 참조하십시오.
요약
이 기사에서 보듯이 Sitecore는 쉽게 사용자 정의할 수 있으므로 사용해 보십시오.
문제 해결
다음은 시도하는 동안 발생한 오류와 처리 방법에 대한 요약입니다.
이름이 'MinimumTest4'인 컨트롤러와 일치하는 유형을 찾을 수 없습니다.
오류 정보.
{"Message": "No HTTP resource was found that matches the request URI 'https://sitecoresc.dev.local/api/minimumtest4/stats'." , "MessageDetail": "No type was found that matches the controller named 'MinimumTest4'"}
해결책.
두 가지 패턴이 있습니다.
1. MapHttpRoute에서 컨트롤러 이름이 잘못 설정되었습니다.
컨트롤러 이름이 올바른지 확인하십시오. MinimumTest4Controller
가 컨트롤러 이름인 경우 MinimumTest4
없이 최대 Controller
까지 지정합니다.
2. optimizeCompilations="true"는 Web.config에서 활성화됩니다.
Web.config에서 <compilation defaultLanguage="c#" debug="true" targetFramework="4.8" optimizeCompilations="true">
를 다음과 같이 설정합니다. If optimizeCompilations
is true
, set optimizeCompilations="false"
.
optimizeCompilations
는 모듈을 업데이트할 때 다시 로드 속도를 높일 수 있는 기능이지만 새 파이프라인 프로세서가 인식되지 않을 수 있습니다. 일반적으로 false
로 설정하는 것이 좋습니다.
'MinimumTestApi.stats'라는 경로가 이미 경로 컬렉션에 있습니다. 경로 이름은 고유해야 합니다.
오류 정보.
Server Error in '/' Application.
A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
해결책
MapHttpRoute
의 정의 이름이 다른 모듈에서 공유됩니다. MapHttpRoute
에서 RegisterHttpRoutes.cs
의 정의 이름을 변경합니다.
"'MinimumTestApi'라는 컨트롤러와 일치하는 여러 유형이 발견되었습니다.
오류 정보.
{"Message": "An error has occurred.", "ExceptionMessage": "Multiple types were found that match the controller named 'MinimumTestApi'. This can happen if the route that services this request ('api/minimumtest3/stats') found multiple controllers defined with the same name but differing namespaces, which is not supported. \r\n\r\nThe request for 'MinimumTestApi' has found the following matching Controllers:\r\nMinimumTest.Controllers.MinimumTestApiController\r\nMinimumTest.Controllers.MinimumTestApiController", "ExceptionType": "System.InvalidOperationException", "StackTrace":"" at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.SelectController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}
해결책.
다른 모듈과 중복된 컨트롤러 클래스 이름이 있기 때문에 이름 확인이 작동하지 않습니다. 컨트롤러 클래스 이름을 다른 이름으로 변경하십시오.
Reference
이 문제에 관하여(최소한으로 구성된 웹 API를 Sitecore XM/XP 10.2에 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nnasaki/how-to-add-a-minimally-configured-web-api-to-sitecore-xmxp-102-256
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 기사에서 보듯이 Sitecore는 쉽게 사용자 정의할 수 있으므로 사용해 보십시오.
문제 해결
다음은 시도하는 동안 발생한 오류와 처리 방법에 대한 요약입니다.
이름이 'MinimumTest4'인 컨트롤러와 일치하는 유형을 찾을 수 없습니다.
오류 정보.
{"Message": "No HTTP resource was found that matches the request URI 'https://sitecoresc.dev.local/api/minimumtest4/stats'." , "MessageDetail": "No type was found that matches the controller named 'MinimumTest4'"}
해결책.
두 가지 패턴이 있습니다.
1. MapHttpRoute에서 컨트롤러 이름이 잘못 설정되었습니다.
컨트롤러 이름이 올바른지 확인하십시오. MinimumTest4Controller
가 컨트롤러 이름인 경우 MinimumTest4
없이 최대 Controller
까지 지정합니다.
2. optimizeCompilations="true"는 Web.config에서 활성화됩니다.
Web.config에서 <compilation defaultLanguage="c#" debug="true" targetFramework="4.8" optimizeCompilations="true">
를 다음과 같이 설정합니다. If optimizeCompilations
is true
, set optimizeCompilations="false"
.
optimizeCompilations
는 모듈을 업데이트할 때 다시 로드 속도를 높일 수 있는 기능이지만 새 파이프라인 프로세서가 인식되지 않을 수 있습니다. 일반적으로 false
로 설정하는 것이 좋습니다.
'MinimumTestApi.stats'라는 경로가 이미 경로 컬렉션에 있습니다. 경로 이름은 고유해야 합니다.
오류 정보.
Server Error in '/' Application.
A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
해결책
MapHttpRoute
의 정의 이름이 다른 모듈에서 공유됩니다. MapHttpRoute
에서 RegisterHttpRoutes.cs
의 정의 이름을 변경합니다.
"'MinimumTestApi'라는 컨트롤러와 일치하는 여러 유형이 발견되었습니다.
오류 정보.
{"Message": "An error has occurred.", "ExceptionMessage": "Multiple types were found that match the controller named 'MinimumTestApi'. This can happen if the route that services this request ('api/minimumtest3/stats') found multiple controllers defined with the same name but differing namespaces, which is not supported. \r\n\r\nThe request for 'MinimumTestApi' has found the following matching Controllers:\r\nMinimumTest.Controllers.MinimumTestApiController\r\nMinimumTest.Controllers.MinimumTestApiController", "ExceptionType": "System.InvalidOperationException", "StackTrace":"" at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.SelectController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}
해결책.
다른 모듈과 중복된 컨트롤러 클래스 이름이 있기 때문에 이름 확인이 작동하지 않습니다. 컨트롤러 클래스 이름을 다른 이름으로 변경하십시오.
Reference
이 문제에 관하여(최소한으로 구성된 웹 API를 Sitecore XM/XP 10.2에 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nnasaki/how-to-add-a-minimally-configured-web-api-to-sitecore-xmxp-102-256
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{"Message": "No HTTP resource was found that matches the request URI 'https://sitecoresc.dev.local/api/minimumtest4/stats'." , "MessageDetail": "No type was found that matches the controller named 'MinimumTest4'"}
Server Error in '/' Application.
A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: A route named 'MinimumTestApi.stats' is already in the route collection.
Parameter name: name
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
{"Message": "An error has occurred.", "ExceptionMessage": "Multiple types were found that match the controller named 'MinimumTestApi'. This can happen if the route that services this request ('api/minimumtest3/stats') found multiple controllers defined with the same name but differing namespaces, which is not supported. \r\n\r\nThe request for 'MinimumTestApi' has found the following matching Controllers:\r\nMinimumTest.Controllers.MinimumTestApiController\r\nMinimumTest.Controllers.MinimumTestApiController", "ExceptionType": "System.InvalidOperationException", "StackTrace":"" at System.Web.Http.Dispatcher.DefaultHttpControllerSelector.SelectController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}
Reference
이 문제에 관하여(최소한으로 구성된 웹 API를 Sitecore XM/XP 10.2에 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nnasaki/how-to-add-a-minimally-configured-web-api-to-sitecore-xmxp-102-256텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)