SLES 12.1의 mod_mono는 ASP.Net web.config를 암호화할 수 없습니다.

SLES 12.1의 mod_mono는 ASP.Net web.config를 암호화할 수 없습니다.

ASP.Net(2.0) VB 웹 애플리케이션을 SLES 11 서버에서 새 SLES 12 서버로 마이그레이션하려고 합니다. 불행하게도 Novell/SUSE/NetIQ 사용자는 더 이상 모노를 지원하지 않습니다.

mono/mod_mono Apache 조합을 개발하는 것은 이번이 처음입니다. 훌륭한 학습 경험이었습니다. 모든 것이 올바르게 정렬되어 있는지 잘 모르겠습니다(모노 버전/저장소/구성). Visual Studio 2008 이후로 많은 것이 변경되었습니다. 전 Novell이나 다른 Mono 전문가가 이 문제를 해결하는 데 도움을 줄 수 있기를 바랍니다.

그래서 약간의 노력 끝에 작동하는 솔루션을 얻을 수 있었지만 web.config를 암호화할 수 없는 것 같습니다. 보호된 호출은 암호화된 web.config ConnectionStrings 섹션을 생성하지 않지만 대신 대부분의 파일을 차지하고 다음 메시지와 함께 오류 페이지를 제공합니다.

System.Xml.XmlException

루트 요소가 누락되었습니다.

당연하게도 네트워크 구성은 다음과 같이 줄어듭니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration><appSettings>
  </appSettings></configuration>

~에서

?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
  </appSettings>
  <connectionStrings>
    <add name="websalesConnectionString" connectionString="server=192.168.85.15;User Id=zzzz;password=zzzz;Persist Security Info=True;database=websales" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
  <system.web>
    <authentication mode="Windows" />
    <httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
    <compilation debug="true" strict="false" explicit="true">
      <assemblies>
        <add assembly="*" />
      </assemblies>
    </compilation>
    <customErrors mode="Off" />
    <pages>
      <namespaces>
        <clear />
        <add namespace="System" />
        <add namespace="System.Collections" />
        <add namespace="System.Collections.Generic" />
        <add namespace="System.Collections.Specialized" />
        <add namespace="System.Configuration" />
        <add namespace="System.Text" />
        <add namespace="System.Text.RegularExpressions" />
        <add namespace="System.Web" />
        <add namespace="System.Web.Caching" />
        <add namespace="System.Web.SessionState" />
        <add namespace="System.Web.Security" />
        <add namespace="System.Web.Profile" />
        <add namespace="System.Web.UI" />
        <add namespace="System.Web.UI.WebControls" />
        <add namespace="System.Web.UI.WebControls.WebParts" />
        <add namespace="System.Web.UI.HtmlControls" />
      </namespaces>
    </pages>
  </system.web>
</configuration>

암호화(파일 삼키기)를 수행하기 위해 호출되는 방법입니다.

Public Sub webencrypt(ByVal lEncrypt As Boolean)
    Dim config As Configuration = WebConfigurationManager.OpenWebConfiguration("~")
    Dim configSection As ConfigurationSection = config.GetSection("connectionStrings")
    If lEncrypt Then
        If Not configSection.SectionInformation.IsProtected Then
            configSection.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider")
            config.Save()
        End If
    End If          
End Sub

나는 열심히 노력했다코드:http://www.developersalley.com/blog/post/2011/11/22/How-To-Protect-Webconfig-File.aspx

그리고 다음에서 : http://devproconnections.com/aspnet/encrypting-configuration-file-sections

버전 정보

  • 아파치2(2.4.16)
  • Apache2-mod-모노(3.12-1)
  • 모노(4.2.2.30)
  • ASP.NET(2.0)

mod-mono-serverX.exe

또 다른 미스터리는 mod-mono-server2.exe 오류가 아파치 로그에 나타난다는 것입니다. mod-mono-server2.exe(/usr/bin에 패키지되어 있음)가 호출되는 이유는 무엇입니까?

'/usr/lib/mono/2.0/mod-mono-server2.exe' 어셈블리를 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

특히 Apache mod_mono 지시문 MonoServerPath를 사용하여 mod-mono-server4.exe를 호출합니다.

... MonoServerPath 웹 테스트 "/usr/bin/mod-mono-server4" ...

어느 전화

/usr/lib/mono/4.5/mod-mono-server4.exe

이는 다음을 가리킨다.

mod-mono-server4.exe -> ../gac/mod-mono-server4/4.2.0.0__0738eb9f132ed756/mod-mono-server4.exe

mod-mono-server2.exe는 최신 모노 AFAIK와 함께 설치되지 않습니다. 문서에서는 여전히 mod-mono-server4를 언급하지 않고 ASP 1의 경우 mod-mono-server, ASP 2의 경우 mod-mono-server2를 언급하고 있기 때문에 이를 파악하기 위해 많은 결합/테스트가 필요했습니다.

오류를 무시하거나 모노 래퍼의 모든 지점을 mod-mono-server4로 다시 지정할 수 있지만 그것도 옳지 않은 것 같습니다.

관련 정보