다른 사용자가 로그인한 후 현재 사용자가 웹 서비스에서 변경되지 않습니다.

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/76243

문제

문맥: 이 웹 서비스가 SharePoint에 호스팅되어 있습니다.

[ServiceContract]
public interface IUserService
{
  [WebInvoke(UriTemplate = "/GetCurrentUser", Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
  [OperationContract]
  string GetCurrentUser();
}

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class UserService: IUserService
{
  public string GetCurrentUser()
  {
    return SPContext.Current.Web.CurrentUser.LoginName;
  }
}

해당 서비스 파일 UserService.svc ISAPI 폴더에 매핑되며 다음과 같습니다.

<%@ ServiceHost Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
                Language="C#" Debug="true"
                Service="UserService, $SharePoint.Project.AssemblyFullName$" %>

JavaScript 코드를 통해 SharePoint 페이지에서 웹 서비스를 호출하고 있습니다.

function getCurrentUser() {
  $.ajax({
    type: 'GET',
    url: 'http://server/sites/rootweb/_vti_bin/UserService.svc/GetCurrentUser',
    success: function (data) {
      printToDiv(data);
    }
  });
}

URL은 데모 목적으로만 하드 코딩되어 있습니다.

문제: 사용자 A가 JavaScript 함수를 처음 호출한 사람이라고 가정합니다.그런 다음 서비스는 그의 사용자 이름을 반환합니다.나중에 다른 사람이 SharePoint에 로그인하여 웹 서비스를 호출하면 그는 사용자 A의 사용자 이름을 얻게 됩니다.IE가 닫히고 새로 시작되고 사용자 C가 웹 서비스를 처음 호출한 사람이라면 그의 사용자 이름이 항상 반환됩니다.사용자 A 또는 사용자 B가 SharPoint에 로그인하는지 여부는 중요하지 않습니다.어쨌든 웹 서비스를 처음 호출한 사용자는 웹 서비스나 JavaScript 코드에 의해 캐시됩니다.

웹 서비스가 올바른 사용자 이름을 반환하려면 어떻게 해야 합니까?

도움이 되었습니까?

해결책

브라우저가 AJAX 요청의 응답을 캐싱하기 때문일 수 있습니다. 예를 들어 IE는 이를 좋아합니다.다음을 추가해 보세요. cache:false AJAX 요청에:

function getCurrentUser() {
  $.ajax({
    type: 'GET',
    cache: false,
    url: 'http://server/sites/rootweb/_vti_bin/UserService.svc/GetCurrentUser',
    success: function (data) {
      printToDiv(data);
    }
  });
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top