Episerver プロジェクトでは、あるサーバー上の Web サイトから別のサーバーの ASMX Web サービスへの呼び出しが行われます。呼び出しているユーザーは、IIS 7 でフォルダーからファイルを書き込み、作成、および取得するすべての権限を持っています。
この呼び出しが行われると、次のエラー メッセージが表示されます。
RemotePublishForLedigeStillinger.DataFactoryService.RawPage rawPageLedigeStillingerRemote = dfService.GetDefaultPageData(pageRef, Int32.Parse(pageidOfLedigeStillingar));
次のエラーを解決するにはどうすればよいですか?:
Detailed error information (authorized by permissions to functions)
Error occured 01.10.2012 14:35:07
User IP 172.29.2.84
User Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
Url ....
Referer ...
The request failed with HTTP status 401: Unauthorized.
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.Net.WebException: The request failed with HTTP status 401: Unauthorized.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[WebException: The request failed with HTTP status 401: Unauthorized.]
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) +431289
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +204
RemotePublishForLedigeStillinger.DataFactoryService.DataFactoryService.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID) in C:\Programmering\RemotePublishTest\RemotePublishTest\Web References\DataFactoryService\Reference.cs:147
RemotePublishForLedigeStillinger.Program.PublishPageToRemoteService(PageData pageLedigeStillingerOriginal) in C:\Programmering\RemotePublishTest\RemotePublishTest\Program.cs:143
EPiServer.Templates.RelatePlus.Pages.JobAd.RemotePublishPage(PageData pageToPublish) in C:\Repo\Projects\dikt.intranett\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:125
EPiServer.Templates.RelatePlus.Pages.JobAd.Godkjent_OnClick(Object sender, EventArgs e) in C:\Repo\Projects\dikt.intranett\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:110
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
IIS ログには次のように表示されます。
2002:5100:9dbc:8000:0:5efe:10.50.0.227, -, 10/1/2012, 14:52:20, W3SVC2, DRINVS253, 2002:5100:9dbc:8000:0:5efe:10.50.0.160, 15, 775, 1700, 401, 0, POST, /WebServices/DataFactoryService.asmx, -,
2002:5100:9dbc:8000:0:5efe:10.50.0.227, dr-2\epi.admin, 10/1/2012, 14:52:20, W3SVC2, DRINVS253, 2002:5100:9dbc:8000:0:5efe:10.50.0.160, 0, 806, 1700, 401, 0, POST, /WebServices/DataFactoryService.asmx, -,
Web サービスがデプロイされているサーバーの web.config からの一部のデータ。
<episerver.basicAuthentication sendBasicChallenge="true" basicRealm="" />
<system.web>
<httpModules>
<add
name="BasicAuthentication"
type="EPiServer.Security.BasicAuthentication, EPiServer" />
</httpModules>
<httpRuntime maxRequestLength="1000000" />
<authorization>
<allow roles="Administrators,WebServices,dr-2\epi.admin" />
<deny users="*" />
</authorization>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="BasicAuthentication" type="EPiServer.Security.BasicAuthentication, EPiServer" />
</modules>
<handlers>
<clear />
<add name="webresources" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
<add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
<add name="wildcard" path="*" verb="*" type="EPiServer.Web.StaticFileHandler, EPiServer" />
</handlers>
</system.webServer>
追加: ユーザーは「dr-2\epi-admin」です。
ログインの詳細がサーバーに送信されます。
public DataFactoryService() {
this.Url = System.Configuration.ConfigurationManager.AppSettings[urlForLedigeStillingerRemoteServiceStringFromAppSettingsGlobal];
this.UseDefaultCredentials = true;
//.Default.RemotePublishForLedigeStillinger_DataFactoryService_DataFactoryService;
if ((this.IsLocalFileSystemWebService(this.Url) == true)) {
this.UseDefaultCredentials = true;
this.useDefaultCredentialsSetExplicitly = false;
}
else {
this.useDefaultCredentialsSetExplicitly = true;
}
}
「拒否」タグを削除した後、リクエストはさらに処理され、次のエラーが発生することがわかっています。
または発生 01.10.2012 15:39:56 ユーザー IP 172.29.2.84 ユーザー エージェント Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1 URL [削除された URL]
リファラー [削除された URL] System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。
---> EPiServer.Core.EPiServerException: ユーザーは、EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess()の EPiServer.WebServices.DataFactoryServiceのユーザーに対して、リモート サイトの Web サービスにアクセスするための 'Permission.WebServiceAccess' アクセス権を持っていません.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID) --- 内部例外スタック トレースの終了 --- 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。例外の詳細: System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。
---> EPiServer.Core.EPiServerException: ユーザーは、EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess()の EPiServer.WebServices.DataFactoryServiceのユーザーに対して、リモート サイトの Web サービスにアクセスするための 'Permission.WebServiceAccess' アクセス権を持っていません.GetDefaultPageData(PageReferencepageLink, Int32 pageTypeID) --- 内部例外スタック トレースの終了
ソース エラー: 現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
スタックトレース:
[SoapException: System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。
---> EPiServer.Core.EPiServerException: ユーザーは、EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess()の EPiServer.WebServices.DataFactoryServiceのユーザーに対して、リモート サイトの Web サービスにアクセスするための 'Permission.WebServiceAccess' アクセス権を持っていません.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID) --- 内部例外スタック トレースの終了 ---] System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage メッセージ、WebResponse 応答、ストリーム responseStream、ブール asyncCall) +431766
システム。 Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) +204
C:\Programmering\RemotePublishTest\RemotePublishTest\Web References\DataFactoryService\Reference.cs:148 の
RemotePublishForLedigeStillinger.DataFactoryService.DataFactoryService.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID):C:\Programmering\RemotePublishTest の RemotePublishForLedigeStillinger.Program.PublishPageToRemoteService(PageData pageLedigeStillingerOriginal) \RemotePublishTest\Program.cs:143
C:\Repo\Projects\dikt.intranett\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:125 EPiServer.Templates.RelatePlus.Pages 内の EPiServer.Templates.RelatePlus.Pages.JobAd.RemotePublishPage(PageData pageToPublish)。 C:\Repo\Projects\dikt.intranett\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:110 の JobAd.Godkjent_OnClick(オブジェクト送信者、EventArgs e) System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web. UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565