none
http status 401 unauthorized RRS feed

  • 问题

  • 自定义开发webservice,调用自己开发的webservice,内网调用是可以成功的,外网调用报http status 401 unauthorized,内网和外网访问的是同一个服务器。请问各位该如何解决。估计问题出现在下面的方法中: public static CrmService GetCrmService(string url,string name) { //"http://192.168.1.51:5555" //"orientlaser" string crmServerUrl = url; string organizationName = name; WebReference.CrmAuthenticationToken token = new WebReference.CrmAuthenticationToken(); // token.AuthenticationType = 0; token.OrganizationName = organizationName; CrmService server = new CrmService(); if (crmServerUrl != null && crmServerUrl.Length > 0) { UriBuilder builder = new UriBuilder(crmServerUrl); builder.Path = "//MSCRMServices/2007/CrmService.asmx"; server.Url = builder.Uri.ToString(); } server.PreAuthenticate = false; server.Credentials = System.Net.CredentialCache.DefaultCredentials; //1 server.Credentials = new System.Net.NetworkCredential("aa", "123456a.", "cc"); server.CrmAuthenticationTokenValue = token; return server; }
    2009年10月13日 8:15

答案

  • 外网的话,如果是IFD部署,需要使用CrmImpersonater()


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com, http://mscrm.cn
    2009年10月13日 15:13
    版主
  • 我的客戶有做過外網OnPrimse部署的,只是要windows認證。
    2009年10月14日 0:51
  • 问题已经解决了,在这里要感谢韩建兴,是在webservice注册的时候将public static CrmService GetCrmService(string url,string name) { //"http://192.168.1.51:5555" //"orientlaser" string crmServerUrl = url; string organizationName = name; WebReference.CrmAuthenticationToken token = new WebReference.CrmAuthenticationToken(); // token.AuthenticationType = 0; token.OrganizationName = organizationName; CrmService server = new CrmService(); if (crmServerUrl != null && crmServerUrl.Length > 0) { UriBuilder builder = new UriBuilder(crmServerUrl); builder.Path = "//MSCRMServices/2007/CrmService.asmx"; server.Url = builder.Uri.ToString(); } server.PreAuthenticate = false; server.Credentials = System.Net.CredentialCache.DefaultCredentials; //1 server.Credentials = new System.Net.NetworkCredential("aa", "123456a.", "cc"); server.CrmAuthenticationTokenValue = token; return server; }将传入的url改成http://localhost[:port],非常感谢小宁给予的帮助!
    2009年10月20日 6:59

全部回复

  • 外网的话,如果是IFD部署,需要使用CrmImpersonater()


    Jim Wang - MVP Dynamics CRM - http://jianwang.blogspot.com, http://mscrm.cn
    2009年10月13日 15:13
    版主
  • 我的客戶有做過外網OnPrimse部署的,只是要windows認證。
    2009年10月14日 0:51
  • jim,小宁,我们是用AD部署的,请问如何解决,请继续关注!
    2009年10月14日 1:30
  • 问题已经解决了,在这里要感谢韩建兴,是在webservice注册的时候将public static CrmService GetCrmService(string url,string name) { //"http://192.168.1.51:5555" //"orientlaser" string crmServerUrl = url; string organizationName = name; WebReference.CrmAuthenticationToken token = new WebReference.CrmAuthenticationToken(); // token.AuthenticationType = 0; token.OrganizationName = organizationName; CrmService server = new CrmService(); if (crmServerUrl != null && crmServerUrl.Length > 0) { UriBuilder builder = new UriBuilder(crmServerUrl); builder.Path = "//MSCRMServices/2007/CrmService.asmx"; server.Url = builder.Uri.ToString(); } server.PreAuthenticate = false; server.Credentials = System.Net.CredentialCache.DefaultCredentials; //1 server.Credentials = new System.Net.NetworkCredential("aa", "123456a.", "cc"); server.CrmAuthenticationTokenValue = token; return server; }将传入的url改成http://localhost[:port],非常感谢小宁给予的帮助!
    2009年10月20日 6:59
  • Thank you


    ___________________________________________________________________________________________________________________________
    youprorn
    2009年12月22日 12:28