尝试为Dynamics CRM 2011 Online编写plugin。
第一步是使用CrmSvcUtil为实体类生成代码。
我认为我的CrmSvcUtil参数正确(见下文),但当我运行它时,我得到:
异常退出程序:元数据包含无法解析的引用: 'https://myorg.crm.dynamics.com/XRMServices/2011/Organization.svc?wsdl'。 启用跟踪并查看跟踪文件以获取更多信息。
启用跟踪(通过CrmSvcUtil.exe.config)会显示以下错误:
---> System.Net.WebException:远程服务器返回错误: (407)需要代理验证 在System.Net.HttpWebRequest.GetResponse()
在System.ServiceModel.Description.MetadataExchangeClient。 MetadataLocationRetriever.DownloadMetadata(TimeoutHelper timeoutHelper)
等...
这是有道理的,因为我所在的网络有一个代理服务器,需要我的网络用户名/密码才能上网。当然,这个用户名/密码与Dynamics CRM不同。
那么,我如何让CrmSvcUtil将正确的用户名/密码传递给代理?
这是我与CrmSvcUtil一起使用的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="url" value="https://myorg.crm.dynamics.com/XRMServices/2011/Organization.svc"/>
<add key="codeCustomization" value="Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration"/>
<add key="out" value="XRM\Xrm.cs"/>
<add key="namespace" value="Xrm"/>
<add key="username" value="myusername@fordynamics.com"/>
<add key="password" value="mydynamicspassword"/>
<add key="deviceid" value="my device ID"/>
<add key="devicepassword" value="my device password"/>
<add key="servicecontextname" value="XrmServiceContext" />
<add key="servicecontextprefix" value="Xrm" />
</appSettings>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="configConsoleListener"
type="System.Diagnostics.ConsoleTraceListener">
<filter type="System.Diagnostics.EventTypeFilter"
initializeData="Error" />
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
答案 0 :(得分:6)
啊哈!我想我破解了它。
我将以下内容添加到CrmSvcUtil.exe.config文件中:
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy proxyaddress="http://proxyaddress:port" />
</defaultProxy>
</system.net>
我不再收到“代理身份验证”错误。
(我得到了一个不同的错误,但是关于丢失的程序集,所以我想我可以想出来......)
答案 1 :(得分:0)
我遇到了同样的错误,我的问题是阻止来自CrmSvcUtil的传出连接的防火墙!