ASP.NET应用程序在部署到IIS时中断

ASP.NET应用程序在部署到IIS时中断,asp.net,iis,deployment,nullreferenceexception,ikvm,Asp.net,Iis,Deployment,Nullreferenceexception,Ikvm,我正在开发一个用于在线购物的小型ASP.NET网站,在Visual Studio中进行测试时,一切正常,但当我将其部署到IIS时,情况已不再如此 问题似乎出在我引用的一个DLL文件中,这个DLL文件包含我需要初始化的类,并将查询请求发送到另一个拥有所有产品信息的服务器。这个DLL最初是一个Jar文件,我使用IKVM将其转换为DLL 当我将应用程序部署到IIS时,尝试实例化该DLL中定义的对象的任何页面都会因空引用而失败,例如: Fulfiller fulfiller = new Fulfille

我正在开发一个用于在线购物的小型ASP.NET网站,在Visual Studio中进行测试时,一切正常,但当我将其部署到IIS时,情况已不再如此

问题似乎出在我引用的一个DLL文件中,这个DLL文件包含我需要初始化的类,并将查询请求发送到另一个拥有所有产品信息的服务器。这个DLL最初是一个Jar文件,我使用IKVM将其转换为DLL

当我将应用程序部署到IIS时,尝试实例化该DLL中定义的对象的任何页面都会因空引用而失败,例如:

Fulfiller fulfiller = new Fulfiller();
string result = fulfiller.initialize("host", port, "user", "pass");
返回此错误:

System.NullReferenceException
:对象引用未设置为实例 指一个物体。at
Fulfiller.toLog(字符串)
at
Fulfiller.initialize(字符串str1、Int32 i、字符串str2、字符串str3)
在Orders.createDataSource()上

现在再次说明,这在VS开发服务器上非常有效,但在IIS中会中断,我不知道为什么。在IIS上运行时,DLL没有正确加载,这是某种编码问题吗?或者是IIS的问题,或者是阻止DLL执行或发送请求,我非常渴望解决这个问题


谢谢

fulfiller.Initialize()在做什么?你能发那个密码吗


很明显,您有一个fulfiller引用,因为您不能无错误地传递构造函数,然后有一个null-ref。

fulfiller.Initialize()在做什么?你能发那个密码吗


很明显,您有一个fulfiller引用,因为您不能无错误地传递构造函数,然后使用null-ref。

通常,当在开发服务器上工作的东西在IIS上不工作时,问题是授权(VS服务器在您的凭据下运行,但IIS作为“网络服务”或其他系统用户运行)

例如,我在fulfiller.toLog()上看到您的代码中断


可能是toLog()函数试图打开一个日志文件,而IIS模拟的用户无权读取或写入该文件吗?

通常,当在开发服务器上运行的东西在IIS上不起作用时,问题是授权(VS服务器在您的凭据下运行,但IIS作为“网络服务”运行)或其他系统用户)

例如,我在fulfiller.toLog()上看到您的代码中断


可能是toLog()函数正在尝试打开日志文件,而IIS模拟的用户无权读取或写入该文件吗?

I second Loris的回答

dev服务器具有您的权限。假设您正在部署到Windows Server或任何运行Active Directory的计算机,您应该能够右键单击存储日志文件的目录并选择“属性”。在该对话框中,将有一个标签为“安全性”的选项卡。如果网络服务用户(或IUSR_machinename)不可见,则必须将其添加到列表中。选择用户并为其分配读写权限


不要向IIS用户授予对整个应用程序目录的完全权限。这是一个巨大的安全漏洞,因此默认部署不给您当前所需的权限。

我支持Loris的回答

dev服务器具有您的权限。假设您正在部署到Windows Server或任何运行Active Directory的计算机,您应该能够右键单击存储日志文件的目录并选择“属性”。在该对话框中,将有一个标签为“安全性”的选项卡。如果网络服务用户(或IUSR_machinename)不可见,则必须将其添加到列表中。选择用户并为其分配读写权限


不要向IIS用户授予对整个应用程序目录的完全权限。这是一个巨大的安全漏洞,因此默认部署没有为您提供当前所需的权限。

我没有使用IKVM,但我确信服务器上必须安装一些IKVM运行时。您在服务器上检查过IKVM吗


希望这有帮助。

我没有使用过IKVM,但我确信服务器上必须安装一些IKVM运行时。您在服务器上检查过IKVM吗

希望这有帮助