0

在 Episerver 项目中,从一台服务器上的网站调用另一台服务器上的 ASMX-webservice。调用的用户有权在 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 message, WebResponse response, Stream responseStream, Boolean asyncCall) +431766
System. Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] 参数) +204
RemotePublishForLedigeStillinger.DataFactoryService.DataFactoryService.GetDefaultPageData(PageReference pageLink, Int32 pageTypeID) 在 C:\Programmering\RemotePublishTest\RemotePublishTest\Web References\DataFactoryService\Reference.cs:148
RemotePublishForLedigeStillinger.Program.PublishPageToRemoteService(PageData pageLedigeStillingerOriginal) 在 C:\Programmering\RemotePublishTest \RemotePublishTest\Program.cs:143
EPiServer.Templates.RelatePlus.Pages.JobAd.RemotePublishPage(PageData pageToPublish) 在 C:\Repo\Projects\dikt.intranett\www\Templates\RelatePlus\Pages\JobAd.aspx.cs:125 EPiServer.Templates.RelatePlus.Pages。 JobAd.Godkjent_OnClick(Object sender, EventArgs e) 在 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(布尔 includeStagesBeforeAsyncPoint,布尔 includeStagesAfterAsyncPoint)+1565

4

1 回答 1

0

乍一看,在我看来,匿名用户和/或托管服务的应用程序池的身份没有权限枚举组 dr-2\epi.admin,在“角色...允许”中指定" 您的配置文件的块...或调用用户身份不是这些角色,并且默认拒绝规则适用。

于 2012-10-01T13:21:57.657 回答