部署到 Web 服务器后 MVC Null 异常
Posted
技术标签:
【中文标题】部署到 Web 服务器后 MVC Null 异常【英文标题】:MVC Null exception after deploying to web server 【发布时间】:2012-01-09 18:13:45 【问题描述】:我有一个 MVC 3 应用程序,在从 Visual Studio 本地运行时运行良好,
有两个 bat 文件预编译应用程序准备部署,当我运行 bat 文件并将部署文件夹上传到 Web 服务器时,会引发大量错误,包括空异常错误,
通过访问以下 URL 可以看到错误,如果需要,我还可以在文档上提供完整的堆栈跟踪,我不想在这里发布它,因为它太大了。
error can be seen here
我无法理解错误来自哪里,因为一切都在本地工作,似乎这些错误是在 bat 文件编译应用程序时创建的,有没有人在部署 MVC 应用程序后有类似的经历?任何人都可以就可能导致问题的原因提供任何建议吗?
谢谢
利亚姆
更新=============
这是 GetTax 方法,此代码已作为 NopCommerce 2.2 的一部分经过彻底测试,仅在通过 BAT 文件编译解决方案后才会出现错误,BAT 文件再次成为构建 nop commerce 2.2 应用程序的标准,对吗在运行 BAT 文件并编译代码以进行部署时,认为它一定是我的机器上的某些东西导致了这些问题?
public virtual decimal GetTaxRate(ProductVariant productVariant, int taxCategoryId,
Customer customer)
//tax exempt
if (IsTaxExempt(productVariant, customer))
return decimal.Zero;
//tax request
var calculateTaxRequest = CreateCalculateTaxRequest(productVariant, taxCategoryId, customer);
//make EU VAT exempt validation (the European Union Value Added Tax)
if (_taxSettings.EuVatEnabled)
if (IsVatExempt(calculateTaxRequest.Address, calculateTaxRequest.Customer))
//return zero if VAT is not chargeable
return decimal.Zero;
//active tax provider
var activeTaxProvider = LoadActiveTaxProvider();
//get tax rate
var calculateTaxResult = activeTaxProvider.GetTaxRate(calculateTaxRequest);
if (calculateTaxResult.Success)
return calculateTaxResult.TaxRate;
else
return decimal.Zero;
【问题讨论】:
第 240 行是哪一行?另外,就是我在调试部署问题时尝试的,你有没有尝试在IIS中回收应用程序池? 【参考方案1】:堆栈跟踪表明它来自TaxService.cs
中的方法GetTaxRate
。我猜这不是特定于 ASP.NET MVC 的任何东西,而是一个部署问题。可能是数据库权限或连接字符串。您必须检查该方法在做什么。
Nop.Services.Tax.TaxService.GetTaxRate(ProductVariant productVariant, Int32 taxCategoryId, Customer customer) in c:\Nop 2.2 Source\just4fashion2.2source\Libraries\Nop.Services\Tax\TaxService.cs:240
【讨论】:
【参考方案2】:这可能与您的开发和生产环境之间的配置不匹配有关。
如果您查看堆栈跟踪的顶部,您会发现这可能与 MVC 无关,但与您的 TaxService
中的某些内容有关。
[NullReferenceException: Object reference not set to an instance of an object.]
Nop.Services.Tax.TaxService.GetTaxRate(ProductVariant productVariant, Int32 taxCategoryId, Customer customer) in c:\Nop 2.2 Source\just4fashion2.2source\Libraries\Nop.Services\Tax\TaxService.cs:240
您需要检查发生 Null 异常的元素。 检查事项:
productVariant 是否为空? 客户是否为空? 在此函数中是否有任何其他元素被访问,例如可能为空的存储库或工厂? 本地和生产之间是否有任何配置更改,例如连接字符串、日志记录或安全设置?【讨论】:
您好,感谢您的建议,我很确定没有空值,空值不会在我的本地环境中产生相同的错误吗?我认为这一定是某种类型的配置错误,我检查了连接字符串并且可以与旧的预编译版本一起使用,所以我想可以排除 Null 值可能会出现在生产环境中,例如依赖注入(以及不同的配置)。我会添加 if ( == null ) 检查所有值并抛出更具描述性的错误消息,以便您知道要查找的内容 再次感谢,我试一试并发布结果。以上是关于部署到 Web 服务器后 MVC Null 异常的主要内容,如果未能解决你的问题,请参考以下文章
[Asp.net mvc]实体更新异常:存储区更新插入或删除语句影响到了意外的行数。实体在加载后可能被修改或删除。
将Maven的Web项目部署到windows的Tomcat里
仅在 IIS 部署后的 Asp.net Web api 异常:名为“HelpPage_Default”的路由已在路由集合中