访问Web服务时出错

时间:2012-03-07 06:38:50

标签: c# web-services crm

我正在处理一个控制台应用程序,并且我正在使用Web服务但是在访问该服务时出现错误:

客户发现'text / html的响应内容类型; charset = utf-8',但预计'text / xml'。 请求失败,并显示错误消息:

--
<html>
    <head>
        <title>Runtime Error</title>
        <style>
         body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
         p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
         b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
         H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
         H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
         pre {font-family:"Lucida Console";font-size: .9em}
         .marker {font-weight: bold; color: black;text-decoration: none;}
         .version {color: gray;}
         .error {margin-bottom: 10px;}
         .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
        </style>
    </head>

    <body bgcolor="white">

            <span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>

            <h2> <i>Runtime Error</i> </h2></span>

            <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

            <b> Description: </b>An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
            <br><br>

            <b>Details:</b> To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".<br><br>

            <table width=100% bgcolor="#ffffcc">
               <tr>
                  <td>
                      <code><pre>

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration></pre></code>

                  </td>
               </tr>
            </table>

            <br>

            <b>Notes:</b> The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.<br><br>

            <table width=100% bgcolor="#ffffcc">
               <tr>
                  <td>
                      <code><pre>

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration></pre></code>

                  </td>
               </tr>
            </table>

            <br>

    </body>
</html>

这是我的代码:

namespace ConsoleWebService
{
    class MainDataService
    {
        static void Main(string[] args)
        {
            Console.WriteLine("New Account GUID="+CreateAccount("GTLDEV","New Account1"));
            Console.ReadKey();
        }

        private static string CreateAccount(string organizationName, string accountName)
        {
            try
            {

                CrmSdk.CrmService myCrm = new CrmSdk.CrmService();
                myCrm.Url = GetCrmServiceForOrganization(organizationName);
                CrmSdk.CrmAuthenticationToken myToken = new CrmSdk.CrmAuthenticationToken();
                myToken.AuthenticationType = 0;
                myToken.OrganizationName = organizationName;
                myCrm.CrmAuthenticationTokenValue = myToken;
                myCrm.Credentials = System.Net.CredentialCache.DefaultCredentials;


                CrmSdk.account newAccount = new CrmSdk.account();

                newAccount.name = accountName;
                newAccount.address1_country = "India";
                newAccount.address1_city = "Mumbai";

                CrmSdk.Lookup objLookup=new CrmSdk.Lookup();
                objLookup.type= "account";
                objLookup.Value= new Guid("A8A58DB6-5364-E111-9493-00E04C39161E");

                newAccount.parentaccountid = objLookup;
                CrmSdk.Lookup objLookup1 = new CrmSdk.Lookup();
                objLookup1.type = "contact";
                objLookup1.Value = new Guid("1EDE79DD-FC5D-E111-9493-00E04C39161E");

                newAccount.primarycontactid = objLookup1;
                CrmSdk.Picklist pl = new CrmSdk.Picklist();
                pl.name = "address1_addresstypecode";
                pl.Value = 1;
                newAccount.address1_addresstypecode = pl;



                Guid newAccountId = myCrm.Create(newAccount);
                return newAccountId.ToString();
            }
            catch (System.Web.Services.Protocols.SoapException soapEx)
            {
                Console.WriteLine("SOAP exception: " + soapEx.Detail.InnerText + " " + soapEx.ToString());
                return soapEx.Detail.InnerText + "  " + soapEx.ToString();
            }
            catch (Exception ex)
            {
                Console.WriteLine("General exception: " + ex.ToString());
                return "General exception: " + ex.ToString();
            }

        }
        private static string GetCrmServiceForOrganization(string organizationName)
        {
            string urlResult = "";
            CrmSdk.Discovery.CrmDiscoveryService myCrm = new CrmSdk.Discovery.CrmDiscoveryService();

            //myCrm.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
            System.Net.CredentialCache.DefaultNetworkCredentials.UserName = "kartik.patel";
            System.Net.CredentialCache.DefaultNetworkCredentials.Domain = "server";
            System.Net.CredentialCache.DefaultNetworkCredentials.Password = "gtl12@";
            myCrm.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
            CrmSdk.Discovery.RetrieveOrganizationsRequest myRequest = new CrmSdk.Discovery.RetrieveOrganizationsRequest();

            CrmSdk.Discovery.RetrieveOrganizationsResponse myResponse = (CrmSdk.Discovery.RetrieveOrganizationsResponse)myCrm.Execute(myRequest);
            foreach (CrmSdk.Discovery.OrganizationDetail tDetail in myResponse.OrganizationDetails)
            {
                Console.WriteLine("Organization = " + tDetail.OrganizationName);
                if (String.Compare(tDetail.OrganizationName, organizationName, true) == 0)
                {
                    return tDetail.CrmServiceUrl;
                }
            }
            return urlResult;

        }

    }
}

0 个答案:

没有答案