【问题标题】:Unable to get legacy XML-RPC website working in IIS 8.0 integrated mode无法让旧的 XML-RPC 网站在 IIS 8.0 集成模式下工作
【发布时间】:2019-04-10 12:49:39
【问题描述】:

我有一个遗留的.NET webservice,它建立在由cook-computing (http://www.cookcomputing.com) 提供的XML-RPC 服务器库之上,在Classic Mode 中一切正常,但是当我尝试将它迁移到@987654324 时@ 它给了我一个错误

System.Runtime.Remoting.RemotingException:请求的服务不 找到了

以下是我的 web.config 的内容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections/> 
   <appSettings file="c:\website\load.xml">
  </appSettings>
  <system.webServer>
    <security>
      <requestFiltering allowDoubleEscaping="true">
        <requestLimits maxAllowedContentLength="330301440" />
      </requestFiltering>
    </security>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" /> 
    <directoryBrowse enabled="false" />
    <handlers>
      <add  name="TESLA" path="tesla.rem"  verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />        
    </handlers>
    <defaultDocument>
      <files> 
        <remove value="index.htm" />
        <remove value="index.html" />
        <remove value="Default.asp" />
        <remove value="Default.htm" />
        <remove value="iisstart.htm" />
        <remove value="default.aspx" />
      </files>
    </defaultDocument>
  </system.webServer>
  <system.web>
    <machineKey validationKey="XXXX" decryptionKey="XXX" validation="SHA1" decryption="AES" /> 
    <identity impersonate="false" />
    <compilation defaultLanguage="c#" debug="true">
      <assemblies>
        <add assembly="System.Runtime.Serialization.Formatters.Soap, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.DirectoryServices.Protocols, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
    </compilation>
    <customErrors mode="Off" />
    <authentication mode="None" />
    <authorization> 
      <allow users="*" /> 
    </authorization>
    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />  
    <httpRuntime maxRequestLength="1048576" executionTimeout="3600" requestValidationMode="2.0" />
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />  
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />    
  </system.web>
</configuration>

鉴于我能够使其在经典模式下工作(进行适当更改后),这里可能存在什么问题?

编辑(2019 年 4 月 12 日):我发现解决这个问题的方法是使用“appcmd.exe”将站点从经典模式迁移到集成模式,然后由于工具中的缺陷手动编辑它。

【问题讨论】:

  • 如果调用堆栈可以追踪到该库,请联系其供应商。某些东西不支持集成模式也就不足为奇了。

标签: c# asp.net iis xml-rpc


【解决方案1】:

如果它对其他人有帮助,我可以通过执行以下操作使其正常工作。

1) 使用 appcmd migrate config "sitename/" 将站点从经典模式迁移到集成模式。

2) 编辑“handler”标签,去掉无效的框架关联 preCondition="runtimeVersionv2.0"

<?xml version="1.0" encoding="UTF-8"?>
<configuration>  
<configSections />
   <appSettings file="c:\website\load.xml">
  </appSettings>
  <system.webServer>
    <security>
      <requestFiltering allowDoubleEscaping="true">
        <requestLimits maxAllowedContentLength="330301440" />
      </requestFiltering>
    </security> 
    <handlers>
        <add name="tesla.rem_*" path="tesla.rem" verb="*" type="X.API.tesla, api" preCondition="integratedMode" />
    </handlers> 
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" /> 
    <httpProtocol>
      <customHeaders>   
        <clear />
        <add name="X-XSS-Protection" value="0" />
        <add name="Strict-Transport-Security" value="max-avg=15552001; includeSubDomains; preload" />
      </customHeaders>
    </httpProtocol>   
    <directoryBrowse enabled="false" />  
    <defaultDocument>
      <files> 
        <remove value="index.htm" />
        <remove value="index.html" />
        <remove value="Default.asp" />
        <remove value="Default.htm" />
        <remove value="iisstart.htm" />
        <remove value="default.aspx" />
      </files>
    </defaultDocument>
  </system.webServer>
  <system.web>   
    <pages validateRequest="false">
    </pages>
    <identity impersonate="false" />
    <compilation defaultLanguage="c#" debug="true">
      <assemblies>
        <add assembly="System.Runtime.Serialization.Formatters.Soap, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.DirectoryServices.Protocols, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.EnterpriseServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
        <add assembly="System.Web.RegularExpressions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
    </compilation>   
    <customErrors mode="On" />
    <authentication mode="None" />
    <authorization>
      <allow users="*" />
    </authorization>
    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
    <httpRuntime maxRequestLength="1048576" executionTimeout="3600" requestValidationMode="2.0" />
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
  </system.web>
</configuration>

【讨论】:

    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多