简体   繁体   English

成员提供商部署问题

[英]Membership provider deployment issue

I am trying to deploy a asp.net mvc site. 我正在尝试部署一个asp.net mvc网站。 My hosting service provider provides me dsn database connection for my sql server 2008 database. 我的托管服务提供商为我的sql server 2008数据库提供了dsn数据库连接。 I changed my web.config to use dsn connection using this modification in web.config. 我在web.config中使用此修改更改了我的web.config以使用dsn连接。

<appSettings>       
        <add key="myDSN" value="evdsn"/>    

</appSettings>

In my site I have used asp.net membership provider. 在我的网站中,我使用了asp.net会员提供商。 I have all the tables of membership provider in my own database. 我在自己的数据库中拥有所有会员提供者表。 when I deploy the site I get the following error: \\ 当我部署网站时,我收到以下错误:\\

替代文字

My web.config file is as follows 我的web.config文件如下

    <?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>
  <!--<configSections>

    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/>
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
    </sectionGroup>

  </configSections>-->
    <appSettings>       
            <add key="myDSN" value="evodsn"/>           
    </appSettings>
  <connectionStrings>
    <add name="evocon" connectionString="DSN=myDSN" providerName="System.Data.Odbc" />
  </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" />

    <!--<httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
    </httpModules>-->

        <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>
            <providers>
                <clear />               
                <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="evocon" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" applicationName="/" />
            </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>
  <!--<elmah>
    <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data"/>
  </elmah>-->
  <location path="App_Data" allowOverride="false">
        <system.web>
            <authorization>
                <allow users="?" />
            </authorization>
        </system.web>
    </location>
</configuration>

You're specifying in your <membership><provider> node that you want the connectionStringName to be "myconnectionstring", yet you don't specify that connection string anywhere. 您在<membership><provider>节点中指定您希望connectionStringName为“myconnectionstring”,但您没有在任何地方指定该连接字符串。 You've got an AppSetting key, but that isn't being used either. 你有一个AppSetting键,但也没有使用它。 So, yes, you should use the DSN name provided to you, but you've got to put it in the right place, which is the connectionStrings node in your .config file. 所以,是的,您应该使用提供给您的DSN名称,但是您必须将它放在正确的位置,即.config文件中的connectionStrings节点。

Update 更新
This article about connecting to an ODBC database via the SQLDataSourceControl has some helpful info, namely, that your connectionString section could look like this: 文章关于通过SQLDataSourceControl连接到ODBC数据库提供了一些有用的信息,即你的connectionString部分看起来是这样的:

<configuration>
  <connectionStrings>
    <add 
      name="ODBCDataConnectionString" 
      connectionString="Driver=ODBCDriver;server=ODBCServer;"
      providerName="System.Data.Odbc"
    />
  </connectionStrings>
</configuration>

...so, perhaps instead of using the DSN designation, you could use the "server" attribute of the connectionString and then just use their dsn name there? ...所以,也许不是使用DSN指定,你可以使用connectionString的“server”属性,然后在那里使用他们的dsn名称?

错误消息的AspNetSqlMembershipProvider是,在您指定要使用AspNetSqlMembershipProvider提供程序的配置文件中,您没有指定有效的连接字符串,该字符串必须在配置文件的connectionStrings部分中定义。

Try using this connection string: 尝试使用此连接字符串:

System DSN DSN=myDsn;Uid=myUsername;Pwd=; 系统DSN DSN = myDsn; Uid = myUsername; Pwd =;

File DSN FILEDSN=c:\\myDsnFile.dsn;Uid=myUsername;Pwd=; 文件DSN FILEDSN = c:\\ myDsnFile.dsn; Uid = myUsername; Pwd =;

From: http://www.connectionstrings.com/dsn 来自: http//www.connectionstrings.com/dsn

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM