ID에 마침표가 포함 된 경우 ApiController가 404를 반환합니다.
ApiController가 있고 이메일 주소를 요청의 ID 매개 변수로 사용하고 싶습니다.
// GET api/employees/email@address.com
public CompactEmployee Get(string id) {
var email = id;
return GetEmployeeByEmail(email);
}
그러나이 작업을 수행 할 수 없습니다 ( 404 반환 ).
http://localhost:1080/api/employees/employee@company.com
다음은 모두 작동합니다.
http://localhost:1080/api/employees/employee@company
http://localhost:1080/api/employees/employee@company.
http://localhost:1080/api/employees?id=employee@company.com
Phil Haack에 의해 자세히 설명 된relaxedUrlToFileSystemMapping="true"
대로 web.config에 설정 했습니다 .
나는 전체 이메일 주소가 작동하는 것을 매우 좋아하지만 마침표 뒤에 다른 문자가 올 때마다 요청은 404를 반환합니다. 어떤 도움이라도 대단히 감사하겠습니다!
해결책
다른 옵션이 없기 때문에 Maggie가 제안한 방향으로 가서이 질문의 답변 을 사용하여 URL에 이메일이 필요할 때 자동으로 후행 슬래시를 추가하는 재 작성 규칙을 만들었습니다.
<system.webServer>
....
<rewrite>
<rules>
<rule name="Add trailing slash" stopProcessing="true">
<match url="^(api/employees/.*\.[a-z]{2,4})$" />
<action type="Rewrite" url="{R:1}/" />
</rule>
</rules>
</rewrite>
</system.webServer>
후행 슬래시를 추가하면 시나리오에 적합합니까?
http://localhost:33021/api/employees/employee@company.com/
IIS 설정을 확인하십시오.
Home Directory -> Configuration
.aspx
애플리케이션 확장을 편집하고 설정 Verify that file exists
이 꺼져 있는지 확인하십시오 .
최신 정보
방금 기본 MVC4 Web API 프로젝트로 테스트했습니다.
URL : http://localhost:10983/api/values/cool@email.com
작업 ValuesController
:
public string Get(string id)
{
return id;
}
이것은 응답이었습니다.
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">cool@email.com</string>
이것은 나를 위해 일한 것입니다.
targetFramework = 4.6.1에서 실행 중이었습니다. 4.6.2로 업그레이드하고 web.config에 추가했습니다.
<system.web>
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.6.2"/>
<!-- This will allow to search for stuff that contains . & etc.-->
<httpRuntime targetFramework="4.6.2" maxRequestLength="100000" maxUrlLength="2048" relaxedUrlToFileSystemMapping="true" requestPathInvalidCharacters=""/>
</system.web>
은 requestPathInvalidCharacters=""
물론, 인코딩 된 형태로, 등 URI처럼 물건을 가질 수있을 것입니다.
참조 URL : https://stackoverflow.com/questions/13298542/apicontroller-returns-404-when-id-contains-period
'programing' 카테고리의 다른 글
Mac OS X 10.6.7 Java 경로 현재 JDK 혼동 (0) | 2021.01.15 |
---|---|
날짜 명령이 Linux 사양을 따르지 않음 (Mac OS X Lion) (0) | 2021.01.15 |
Facebook 페이지에 대한 "만료되지 않는"액세스 토큰 생성 (0) | 2021.01.15 |
Java의 상속으로 인해 얼마나 많은 객체가 생성됩니까? (0) | 2021.01.15 |
Django에서 HTTP 400 응답을 반환하는 방법은 무엇입니까? (0) | 2021.01.15 |