2008-10-30 3 views
0

서비스에 대한 내부 호출에는 잘 작동하는 asp.net 페이지가 있지만, 외부에서 접하는 사이트에서 사용할 경우에는 전혀 작동하지 못합니다. 내부적으로 액세스하지만 IFD 인터페이스를 사용할 때 얻을 모든CrmImpersonator 및 IFD

'Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' doesn't exist. 
Parameter name: Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: 'Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' doesn't exist. 
Parameter name: Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 

어떤 아이디어가 크게 될

public string orgname; 
public string crmurl; 
public string metaurl; 
public bool offline; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    #region CRM URLs and Organization Name 

    //Determine Offline State from Host Name 
    if (Request.Url.Host.ToString() == "127.0.0.1") 
    { 
     #region offline 
     offline = true; 

     //Retrieve the Port and OrgName from the Registry 
     //RegistryKey regkey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\MSCRMClient"); 
     //orgname = regkey.GetValue("ClientAuthOrganizationName").ToString(); 
     string portnumber = regkey.GetValue("CassiniPort").ToString(); 

     //Construct the URLs 
     string baseurl = "http://localhost:" + portnumber + "/mscrmservices/2007/"; 
     crmurl = baseurl + "crmservice.asmx"; 
     metaurl = baseurl + "metadataservice.asmx"; 
     #endregion 
    } 
    else 
    { 
     offline = false; 

     //Retrieve the URLs from the Registry 
     //RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM"); 
     //string ServerUrl = regkey.GetValue("ServerUrl").ToString(); 
     string ServerUrl = "http://192.168.1.152:5555/MSCRMServices"; 
     crmurl = ServerUrl + "/2007/crmservice.asmx"; 
     metaurl = ServerUrl + "/2007/metadataservice.asmx"; 
     Response.Write("ServerURL " + ServerUrl + "<br>"); 
     Response.Write("CRMURL: " + crmurl + "<br>"); 
     Response.Write("MetaURL: " + metaurl + "<br>"); 

     //Retrieve the Query String from the current URL 
     if (Request.QueryString["orgname"] == null) 
     { 
      orgname = string.Empty; 
     } 
     else 
     { 
      //Query String 
      string orgquerystring = Request.QueryString["orgname"].ToString(); 
      if (string.IsNullOrEmpty(orgquerystring)) 
      { 
       orgname = string.Empty; 
      } 
      else 
      { 
       orgname = orgquerystring; 
      } 

     } 

     if (string.IsNullOrEmpty(orgname)) 
     { 
      //Windows Auth URL 
      if (Request.Url.Segments[2].TrimEnd('/').ToLower() == "isv") 
      { 
       orgname = Request.Url.Segments[1].TrimEnd('/').ToLower(); 
      } 

      //IFD URL 
      if (string.IsNullOrEmpty(orgname)) 
      { 
       string url = Request.Url.ToString().ToLower(); 
       int start = url.IndexOf("://") + 3; 
       orgname = url.Substring(start, url.IndexOf(".") - start); 
      } 
     } 
     Response.Write(orgname + "<br>"); 
    } 

    #endregion 
} 

답변

0

가 추가 아래로 내 코드가 감사 것이다라는 메시지 때

CRMImpersonator 괜찮 작동 gac에 대한 Microsoft.Crm.Webservices.dll이이 문제를 해결했습니다.

또한 사용자가 명의 도용되었는지 확인하기 위해 다음과 같은 SQL을 사용하는 데 필요한 :

Execute as user [email protected] 
Select * from FilteredActivityPointer; 
revert 
관련 문제