0

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(PageReference

pageLink, 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

4

1 に答える 1

0

一見したところ、サービスをホストしているアプリケーション プールの匿名ユーザーや ID には、"roles...allow "構成ファイルのブロック...または、呼び出し元のユーザー ID がこれらのロールのいずれにも属しておらず、既定の拒否規則が適用されます。

于 2012-10-01T13:21:57.657 に答える