none
IIS, asp.net里调用webservice, 无法得到正确的集成用户身份 RRS feed

  • 常规讨论

  • asp.net里调用webservice, 无法得到正确的集成用户身份

    问题描述: aspx后台调用webservice, 页面和webservice都使用C#, 发布在同一台机器上, win2003server+IIS6, 都发布在IIS上, 都使用integrated windows authentication, 禁止匿名, 通过IIS访问该页面(http://localhost:8083/Client/Default.aspx), 当前用户是 domain\user1, 页面里取当前用户是正确的domain\user1, 而Webservice里取当前用户则变成了NT AUTHORITY\NETWORK SERVICE, 这不是我想要的情况, 我希望Webservice里取当前用户仍然是domain\user1

    不知是那里的问题导致? 该如何解决?

    另外, 我用一个windows app引用同样的webservice, 却得到正确的当前用户domain\user1...

    代码如下:

    webservice: 发布在 http://localhost:8083/WebServe1/
    namespace WebService1
    {
        /// <summary>
        /// Summary description for Service1
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [ToolboxItem(false)]
        public class Service1 : System.Web.Services.WebService
        {

            [WebMethod]
            public string HelloWorld()
            {
                string domainuser = System.Threading.Thread.CurrentPrincipal.Identity.Name;
                return domainuser + "\n" + "Hello World1";
            }
        }
    }

    aspx页面: 引用http://sh-es-baoyi:8083/WebServe1/Service1.asmx, 发布在 http://localhost:8083/Client/Default.aspx
    namespace Client
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                test.Service1 t = new test.Service1();

                t.PreAuthenticate = true;
                t.Credentials = CredentialCache.DefaultCredentials;
                //t.UseDefaultCredentials = true;

                Response.Write(t.HelloWorld());

            }
        }
    }
    2008年2月3日 3:33