Avatar billede vraa Nybegynder
14. februar 2005 - 16:07 Der er 16 kommentarer og
1 løsning

Automatisk tilføje og slette i web.config

Er det muligt via kodning at tilføje og slette i web.config.
F.eks. tilføje et par linier under system.web og senere hen slette dem uden manuelt og skal ind og gøre det?
Avatar billede burningice Nybegynder
14. februar 2005 - 23:44 #1
nej... kort og godt.

du kan dog altid læse og skrive i den som enhver anden xml fil
Avatar billede vraa Nybegynder
15. februar 2005 - 08:52 #2
Læse og skrive men ikke slette... OK. Jeg prøver noget andet. Tak for hjælpen. Lægger du lige et svar?
Avatar billede burningice Nybegynder
15. februar 2005 - 11:59 #3
slette kan man også... det er jo en helt normal xml fil
Avatar billede vraa Nybegynder
15. februar 2005 - 12:04 #4
OK. Du har vel ikke et hurtig eksempel på hvordan man tilføjer noget mellem <configuration> og <system.web>

Jeg har følgende til at lægge der nu:
<RewriterConfig>
    <Rules>
    <RewriterRule>
        <LookFor>~/nyhedsmodul/default\.aspx</LookFor>
        <SendTo>~/default.aspx?choice=18</SendTo>
    </RewriterRule>
    </Rules>
</RewriterConfig>

Hvordan kan jeg f.eks. tilføje en ny <RewriterRule> via kodning(C#)?
Avatar billede burningice Nybegynder
15. februar 2005 - 12:40 #5
this should do

XmlNode rules = xmlDoc.ChildNodes[1];
            XmlNode rewriterRule = xmlDoc.CreateNode(XmlNodeType.Element, "RewriteRule", "");
           
            XmlNode lookFor = xmlDoc.CreateNode(XmlNodeType.Element, "LookFor", "");
            lookFor.AppendChild(xmlDoc.CreateTextNode("noget at kigge efter"));

            XmlNode sendTo = xmlDoc.CreateNode(XmlNodeType.Element, "SendTo", "");
            sendTo.AppendChild(xmlDoc.CreateTextNode("Et sted at sendes hen"));
           
            rewriterRule.AppendChild(lookFor);
            rewriterRule.AppendChild(sendTo);
           
            rules.AppendChild(rewriterRule);

            xmlDoc.Save("web.config");
Avatar billede vraa Nybegynder
15. februar 2005 - 13:01 #6
Takker. Jeg får dog følgende fejl:
"Detaljer om undtagelse: System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt."
Avatar billede vraa Nybegynder
15. februar 2005 - 13:15 #7
Det er her det er galt:
rules.AppendChild(RewriterRule);
Avatar billede burningice Nybegynder
15. februar 2005 - 14:48 #8
hvis du har kopieret min kode direkte er det på grund af at du har stavet RewriterRule med stort R, når det skal være lille
Avatar billede vraa Nybegynder
15. februar 2005 - 17:12 #9
Det har jeg ændret. Der er ingen fejl når jeg kompilerer det i vs.net
Avatar billede burningice Nybegynder
15. februar 2005 - 17:21 #10
det kan også være det er her den er gal

XmlNode rules = xmlDoc.ChildNodes[1];

Jeg har jo bare gået ud fra at det du skrev i 15/02-2005 12:04:18 er det eneste der står i din web.config. Hvis du har en masse andet ståender der også skal du evt. bruge noget XPath for at få fat i <Rules>-noden
Avatar billede vraa Nybegynder
15. februar 2005 - 21:10 #11
OK. Sorry... Du får lige hele Web.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   
    <configSections>
        <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
    </configSections>

    <appSettings>
            <add key="mysqlConnString" value="Data Source=localhost;Database=db;User ID=root;Password=;"/>
            <add key="rootURL" value="http://localhost/"/>
    </appSettings>

    <RewriterConfig>
        <Rules>
        <RewriterRule>
            <LookFor>~/profil/default\.aspx</LookFor>
            <SendTo>~/default.aspx?choice=1</SendTo>
        </RewriterRule>
        <RewriterRule>
            <LookFor>~/nyheder/default\.aspx</LookFor>
            <SendTo>~/default.aspx?choice=2</SendTo>
        </RewriterRule>
        <RewriterRule>
            <LookFor>~/kontakt/default\.aspx</LookFor>
            <SendTo>~/default.aspx?choice=3</SendTo>
        </RewriterRule>
        </Rules>
    </RewriterConfig>

  <system.web>

    <httpModules>
        <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
    </httpModules>
   
  <!--  DYNAMIC DEBUG COMPILATION
          Set compilation debug="true" to enable ASPX debugging.  Otherwise, setting this value to
          false will improve runtime performance of this application.
          Set compilation debug="true" to insert debugging symbols (.pdb information)
          into the compiled page. Because this creates a larger file that executes
          more slowly, you should set this value to true only when debugging and to
          false at all other times. For more information, refer to the documentation about
          debugging ASP.NET files.
    -->
    <compilation
        defaultLanguage="c#"
        debug="true"
    />

    <!--  CUSTOM ERROR MESSAGES
          Set customErrors mode="On" or "RemoteOnly" to enable custom error messages, "Off" to disable.
          Add <error> tags for each of the errors you want to handle.

          "On" Always display custom (friendly) messages.
          "Off" Always display detailed ASP.NET error information.
          "RemoteOnly" Display custom (friendly) messages only to users not running
          on the local Web server. This setting is recommended for security purposes, so
          that you do not display application detail information to remote clients.
    -->
    <customErrors
    mode="RemoteOnly"
    />

    <!--  AUTHENTICATION
          This section sets the authentication policies of the application. Possible modes are "Windows",
          "Forms", "Passport" and "None"

          "None" No authentication is performed.
          "Windows" IIS performs authentication (Basic, Digest, or Integrated Windows) according to
          its settings for the application. Anonymous access must be disabled in IIS.
          "Forms" You provide a custom form (Web page) for users to enter their credentials, and then
          you authenticate them in your application. A user credential token is stored in a cookie.
          "Passport" Authentication is performed via a centralized authentication service provided
          by Microsoft that offers a single logon and core profile services for member sites.
    -->
    <authentication mode="Windows" />

    <!--  AUTHORIZATION
          This section sets the authorization policies of the application. You can allow or deny access
          to application resources by user or role. Wildcards: "*" mean everyone, "?" means anonymous
          (unauthenticated) users.
    -->

    <authorization>
        <allow users="*" /> <!-- Allow all users -->
            <!--  <allow    users="[comma separated list of users]"
                            roles="[comma separated list of roles]"/>
                  <deny      users="[comma separated list of users]"
                            roles="[comma separated list of roles]"/>
            -->
    </authorization>

    <!--  APPLICATION-LEVEL TRACE LOGGING
          Application-level tracing enables trace log output for every page within an application.
          Set trace enabled="true" to enable application trace logging.  If pageOutput="true", the
          trace information will be displayed at the bottom of each page.  Otherwise, you can view the
          application trace log by browsing the "trace.axd" page from your web application
          root.
    -->
    <trace
        enabled="false"
        requestLimit="10"
        pageOutput="false"
        traceMode="SortByTime"
        localOnly="true"
    />

    <!--  SESSION STATE SETTINGS
          By default ASP.NET uses cookies to identify which requests belong to a particular session.
          If cookies are not available, a session can be tracked by adding a session identifier to the URL.
          To disable cookies, set sessionState cookieless="true".
    -->
    <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
          This section sets the globalization settings of the application.
    -->
    <globalization
            requestEncoding="utf-8"
            responseEncoding="utf-8"
  />
 
</system.web>

</configuration>
Avatar billede vraa Nybegynder
15. februar 2005 - 21:11 #12
Vil gerne dynamisk(via kode) kunne indsætte og slette nye "RewriterRule"'s
Avatar billede burningice Nybegynder
15. februar 2005 - 22:01 #13
XmlNode rules = xmlDoc.SelectSingleNode("/configuration/RewriterConfig/Rules");

http://www.w3schools.com/xpath/xpath_location.asp
Avatar billede vraa Nybegynder
15. februar 2005 - 23:06 #14
Ehm... Jeg får stadig samme fejl.

System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.

på denne linie
rules.AppendChild(RewriterRule);
Avatar billede vraa Nybegynder
15. februar 2005 - 23:08 #15
Skal man ikke åbne/hente Web.config før man redigerer i den?
Avatar billede vraa Nybegynder
15. februar 2005 - 23:15 #16
Jeg fandt ud af det. Det kom til sidst til at se således ud:

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(System.Web.HttpContext.Current.Server.MapPath("Web.config"));
            XmlNode rules = xmlDoc.SelectSingleNode("/configuration/RewriterConfig/Rules");
            XmlNode RewriterRule = xmlDoc.CreateNode(XmlNodeType.Element, "RewriterRule", "");
           
            XmlNode lookFor = xmlDoc.CreateNode(XmlNodeType.Element, "LookFor", "");
            lookFor.AppendChild(xmlDoc.CreateTextNode("noget at kigge efter"));

            XmlNode sendTo = xmlDoc.CreateNode(XmlNodeType.Element, "SendTo", "");
            sendTo.AppendChild(xmlDoc.CreateTextNode("Et sted at sendes hen"));
           
            RewriterRule.AppendChild(lookFor);
            RewriterRule.AppendChild(sendTo);
           
            rules.AppendChild(RewriterRule);

            xmlDoc.Save(System.Web.HttpContext.Current.Server.MapPath("Web.config"));


Tak for hjælpen cyberfessor
Avatar billede burningice Nybegynder
15. februar 2005 - 23:59 #17
well.. jo... det er en god idé at åbne dokumentet først :) troede du havde regnet ud i forbindelse med at du skulle oprette et XmlDocument-object selv også.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester