我試圖訪問WCF服務(MS CRM 2011)並獲取上述錯誤。如果我使用Cassini或IIS Express從VS2010調試器運行我的示例程序,它的效果很好。沒有認證錯誤。但是,如果我將站點發布到本地IIS 7.5(運行Windows 7 64位),則會在抓取CRM UserId(WhoAmIResponse)的行上發生錯誤。錯誤消息:由於身份驗證失敗,無法滿足安全令牌請求
我打開Fiddler來比較在調試器下運行和在IIS下運行的請求。在IIS下運行的網站上,請求甚至都沒有遇到,所以在得到這些之前它一定會失敗。
如發佈到IIS該網站的web.config文件設置...
<authentication mode="Windows">
</authentication>
<identity impersonate="true"/>
該網站是預裝的ASP.NET v4.0的應用程序池,集成管道模式,ApplicationPoolIdentity帳戶下運行。
這裏是我的代碼...
public class DemoController : Controller
{
public ActionResult Index()
{
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
var _serviceProxy = new OrganizationServiceProxy(new Uri("http://svr-rex2011-dev/TimeEntry/XRMServices/2011/Organization.svc"),
null,
credentials,
null);
// This statement is required to enable early-bound type support.
_serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
IOrganizationService service = (IOrganizationService)_serviceProxy;
// Display information about the logged on user.
Guid userid = ((WhoAmIResponse)service.Execute(new WhoAmIRequest())).UserId;
SystemUser systemUser = (SystemUser)service.Retrieve("systemuser", userid,
new ColumnSet(new string[] { "firstname", "lastname" }));
// Retrieve the version of Microsoft Dynamics CRM.
RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
RetrieveVersionResponse versionResponse =
(RetrieveVersionResponse)service.Execute(versionRequest);
ViewBag.FirstName = systemUser.FirstName;
ViewBag.LastName = systemUser.LastName;
ViewBag.Version = versionResponse.Version;
return View();
}
}
任何想法?非常感激!!!
謝謝,這是有道理的。我將帳戶更改爲以NetworkService身份運行,並獲得了相同的結果。那麼你是否建議不使用「內置帳戶」選項來支持「自定義帳戶」選項?我也嘗試過,並且擁有管理員訪問權的域帳戶放入托管WCF服務的框中。同樣的問題。 – 2011-05-12 19:49:08
對,網絡服務標識與該服務器的域分配計算機帳戶(通常是服務器名稱)是相同的。該帳戶最有可能不在可以訪問CRM服務的域組中。要驗證這是問題,請臨時將AppPool分配給您的域帳戶並回收IIS。再次嘗試您的應用程序,如果它調用成功,您會知道它的帳戶身份驗證問題。長期的解決方法是請求具有訪問權限的組中的域帳戶分配給AppPool。 – 2011-05-12 20:02:01
我沒有注意到有關管理員帳戶的一點。根據管理員帳戶授予的權限,可能有權訪問CRM服務,也可能無權訪問。我會嘗試與您的帳戶,因爲你知道它有權訪問CRM服務。 – 2011-05-12 20:07:57