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();
}
}
何か案は?とても有難い!!!