ConfigurationManager.ConnectionStrings在POST上返回null,但在GET请求上不返回null

时间:2018-07-13 13:54:29

标签: asp.net asp.net-mvc

我们将其部署在已经安装并配置了另一个asp.net应用程序的现有服务器上。这不是我们通常要做的,因为我们在新服务器上进行设置并配置所有内容。我们也有同样的ASP.NET应用程序在其他几台服务器上运行,没有问题。

该应用程序是在ASP.NET 4上运行的MVC3

该应用使用控制器创建简单的RPC类型的API。
示例:(发送)/ Services / LMS / GetCourses(返回)XML文档

一旦我们部署了asp.net应用程序并在IIS中进行了所有设置,我们就会遇到一个以前从未见过的问题。

应用程序将在下面的行中发送NullReferenceException。

DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings["LMS"].ProviderName);

但仅当http请求是POST时。如果我们发送GET请求,则该请求有效。

我猜这是一些配置冲突。配置文件中是否有某些内容可能会限制我们的应用程序读取POST上的Web.config设置?


要基于评论提供更多背景信息:

using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Configuration;
using Services.Models;    
public class DBConnection
{
    protected DbProviderFactory factory;
    protected string connectionString;
    protected char paramChar; // could be ':' or '@' depending on database

    public DBConnection(string db) // db is equal to "LMS"
    {
        try
        {
            factory = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings[db].ProviderName); // the exception stack points to this line having NullReferenceException
            connectionString = ConfigurationManager.ConnectionStrings[db].ConnectionString;
            paramChar = DbUtil.GetParamChar(ConfigurationManager.ConnectionStrings[db].ProviderName);
        }
        catch (ConfigurationErrorsException)
        {
            throw new ConfigurationErrorsException("The database " + db + " has not been defined in the web.config file.");
        }
    }
}

0 个答案:

没有答案