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로 다시 지정할 수 있지만 그것도 옳지 않은 것 같습니다.