2011-01-09 31 views
1

Ich versuche, meine Website auf dem Remoteserver zu veröffentlichen. Mein Hosting-Provider hat mir dsn-Konnektivität über Dotnetpanel zur Verfügung gestellt. Wenn ich meine Seite veröffentliche, erhalte ich den Fehler wie im Screenshot gezeigt. Ich habe auch meine Datei web.config aufgenommen. alt textSchlüsselwort nicht unterstützt: 'dsn'

Meine web.config ist wie folgt,

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    Note: As an alternative to hand editing this file you can use the 
    web admin tool to configure settings for your application. Use 
    the Website->Asp.Net Configuration option in Visual Studio. 
    A full list of settings and comments can be found in 
    machine.config.comments usually located in 
    \Windows\Microsoft.Net\Framework\v2.x\Config 
--> 
<configuration> 

    <appSettings>  
      <add key="myDSN" value="evodsn"/>   
    </appSettings> 
    <connectionStrings> 
    <add name="evocon" connectionString="DSN=myDSN;" /> 

    </connectionStrings> 

    <system.net> 
    <mailSettings> 
     <smtp> 
     <network host="smtp.gmail.com" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 


    <system.web> 
     <!-- 
      Set compilation debug="true" to insert debugging 
      symbols into the compiled page. Because this 
      affects performance, set this value to true only 
      during development. 
    --> 
    <httpHandlers> 
     <!--<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>--> 
     <add verb="*" path="TinyMCEHandler.aspx" type="Moxiecode.TinyMCE.Web.HttpHandler, Moxiecode.TinyMCE" validate="false" /> 
     <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="true" /> 
    </httpHandlers> 

    <httpRuntime requestValidationMode="2.0" /> 



     <compilation debug="true" targetFramework="4.0"> 
      <assemblies> 
       <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
       <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
       <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
       <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
       <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /></assemblies> 
     </compilation> 
     <!-- 
      The <authentication> section enables configuration 
      of the security authentication mode used by 
      ASP.NET to identify an incoming user. 
    --> 
    <globalization uiCulture="en" culture="en-GB" /> 
     <authentication mode="Forms"> 
      <forms loginUrl="~/Account.mvc/index" timeout="2880" protection="All" /> 
     </authentication> 
     <membership defaultProvider="evocon"> 
      <providers> 
       <clear /> 

     <add 
      name="evocon" 
      type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
      connectionStringName="evocon" 
      enablePasswordRetrieval="false" 
      enablePasswordReset="true" 
      requiresQuestionAndAnswer="false" 
      /> 


      </providers> 
     </membership> 
     <profile> 
      <providers> 
       <clear /> 
       <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/" /> 
      </providers> 
     </profile> 
     <roleManager enabled="false"> 
      <providers> 
       <clear /> 
       <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
       <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
      </providers> 
     </roleManager> 
     <!-- 
      The <customErrors> section enables configuration 
      of what to do if/when an unhandled error occurs 
      during the execution of a request. Specifically, 
      it enables developers to configure html error pages 
      to be displayed in place of a error stack trace.--> 

     <customErrors mode="Off"> 
      <error statusCode="403" redirect="NoAccess.htm"/> 
      <error statusCode="404" redirect="FileNotFound.htm"/> 
     </customErrors> 

     <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> 
      <namespaces> 
       <add namespace="System.Web.Mvc" /> 
       <add namespace="System.Web.Mvc.Ajax" /> 
       <add namespace="System.Web.Mvc.Html" /> 
       <add namespace="System.Web.Routing" /> 
       <add namespace="System.Linq" /> 
       <add namespace="System.Collections.Generic" /> 
       <add namespace="Telerik.Web.Mvc.UI" /> 
      </namespaces> 
     </pages> 

    </system.web> 
    <!-- 
     The system.webServer section is required for running ASP.NET AJAX under Internet 
     Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <modules runAllManagedModulesForAllRequests="true"> 
     </modules> 
     <handlers> 
      <remove name="MvcHttpHandler" /> 
      <remove name="UrlRoutingHandler" /> 
      <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </handlers> 
     <directoryBrowse enabled="false" /> 
     <defaultDocument> 
      <files> 
       <clear /> 
       <add value="Default.aspx" /> 
       <add value="Default.asp" /> 
       <add value="Default.php" /> 
       <add value="Default.htm" /> 
       <add value="Default.html" /> 
       <add value="Index.aspx" /> 
       <add value="Index.asp" /> 
       <add value="Index.php" /> 
       <add value="Index.htm" /> 
       <add value="Index.html" /> 
       <add value="parking.htm" /> 
      </files> 
     </defaultDocument> 
    </system.webServer> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
       <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" /> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 

    <location path="App_Data" allowOverride="false"> 
     <system.web> 
      <authorization> 
       <allow users="?" /> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 
+0

Oh nein! Der gelbe Bildschirm des Todes! VERBERGEN! Ich meine, ist Ihre Seite bereits in Produktion? Wenn dies der Fall ist, sollten solche Nachrichten Ihren Nutzern nicht angezeigt werden. –

Antwort

6

Aus dem Stack-Trace es sieht aus wie Sie ein SqlClient.SqlConnection Objekt verwenden, aber DSN ist für ODBC-Verbindungen.

Sie ändern entweder Ihre Verbindungszeichenfolge, um eine SQL Server-Verbindungszeichenfolge zu verwenden, oder Sie ändern das Verbindungsobjekt in Ihrem Code zu ODBCConnection.

+0

Ja, ich habe zuvor sqlclient Verbindung verwendet, aber mein Host-Provider hat mir dsn zur Verfügung gestellt. Ich habe DSN vorher nicht im Code benutzt. Meine Website ist asp.net mvc basiert könnten Sie bitte führen Sie mich weiter – Tassadaque

+0

Ich würde dringend empfehlen, mit Ihrem Host-Anbieter zu direkten Zugriff auf SQL Server zu überprüfen. Wenn das nicht möglich ist, besteht die einzige andere Möglichkeit darin, ODBCConnection in Ihrem Code zu verwenden. Beachten Sie jedoch, dass Sie möglicherweise einige Funktionen vermissen, wenn Sie die ODBC-Ebene verwenden, die sonst in SQLConnection verfügbar ist. – Chandu

+0

Ich fragte ihn, mir direkten Zugriff sql Server zu geben. Er gab mir folgende Antwort. "Sie können direkt eine Verbindung zur Datenbank herstellen, ohne den ODBC-Eintrag einzurichten. Möglicherweise müssen Sie jedoch Ihren MSSQL-Client von Enterprise Manager zu SSMSE ändern, da die MSSQL-Version (MSSQL 2008) nicht von Enterprise Manager unterstützt wird" was er versucht zu sagen – Tassadaque

-2

Eine große Sammlung gültiger Verbindungszeichenfolgenbeispiele für die verschiedenen Datenbanken und Technologien finden Sie unter connection strings website.