에 JQuery와 통화 나는 foo.aspx 페이지의 코드 숨김 앉아, ASP.NET 웹 양식에서의 WebMethod이와 오류"인증에 실패했습니다. System.InvalidOperationException "간헐적으로 WEBMETHOD
[WebMethod]
public static String foo()
{
return "";
}
내가
$.ajax({
type: "POST",
url: '<%= ResolveUrl("foo.aspx/foo")%>',
data: JSON.stringify(dataToServer),
contentType: "application/json; charset=utf-8",
success: function (data) {
// work with data here
}
});
jQuery를
사용하여 호출
그리고이 서버로부터 응답 헤더이다
Request
Request Method:POST
Status Code:401 Unauthorized
2:2
Cache-Control:private
Content-Length:105
Content-Type:application/json; charset=utf-8
Date:Tue, 20 Jan 2015 04:40:36 GMT
jsonerror:true
Server:Microsoft-IIS/7.5
X-Powered-By:ASP.NET
응답 본체
012,351,{"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
배경 정보
- 내가 그렇게 AutoRedirectMode을 = 켜지거나 꺼 저를 제안하지 마십시오 ASP.NET 친화적 인 URL을 사용하지 마십시오.
내 사이트에서 WebApi를 사용하고 있는데, 과 관련된 내용인지 확실하지 않습니다. 여기 내 라우팅 구성
RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{name}" ); RouteTable.Routes.MapHttpRoute( name: "DefaultApiNoParameter", routeTemplate: "api/{controller}/{action}" );
내가 다른 ASP.NET 응용 프로그램 내에서 하위 응용 프로그램으로 호스팅 구축 사이트입니다. 그래서 내 응용 프로그램 막대를 호출하자. 도메인 foo.com에서 foobar 내에서 호스팅되므로 http://foo.com/foobar/bar입니다. 때로는 여러 번 새로 고침을 한 후 브라우저에 "사이트 http://foo.com:80은 암호를 입력해야합니다."라고 표시됩니다. 모든 사이트에 익명 인증을 사용하고 폼 인증을 사용하도록 설정하고 다른 인증을 사용하지 않도록 설정합니다.
이것은 나의 web.config 인증 설정입니다. 응용 프로그램은 공개이며, foo.aspx는 개인이며 암호는 입니다.
응용 프로그램<authentication mode="Forms"> <forms name="cookie" loginUrl="login.aspx" defaultUrl="foo.aspx"> <credentials passwordFormat="SHA1"> <user name="foo" password="xxxxxxxx"/> <user name="bar" password="xxxxxxxxx"/> </credentials> </forms> </authentication>
는 단일 웹 서버와 테스트 환경에서 잘 작동합니다. 웹 팜에 배포 할 때만이 문제가 발생합니다.
- 간헐적으로 오류가 발생하며 경우에 따라 요청이 작동하는 경우가 있습니다. 몇 번 페이지를 새로 고침하면 자동으로 로그 아웃됩니다.
에서 찾을 수 있습니까? – Quannt
@Quannt no 일반 텍스트로 구성하면이 기능 만 사용할 수 있습니다. ASP.NET에서 기본 암호화 및 암호화 작업을 수행해야하는 다른 기능 (예 : viewstate는 암호화를 사용하여 암호화 됨)이 있기 때문에 웹 팜 및로드 균형 조정 된 인프라에 배포 할 때 machineKey 요소를 지정하는 것이 좋습니다. 열쇠 – Leo
감사합니다 @ 레오! 대단히 감사합니다. – Quannt