Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET应用程序在发布到windows server 2008计算机时使用了错误的文件路径_C#_Asp.net_Visual Studio 2010_Windows Server 2008 R2 - Fatal编程技术网

C# ASP.NET应用程序在发布到windows server 2008计算机时使用了错误的文件路径

C# ASP.NET应用程序在发布到windows server 2008计算机时使用了错误的文件路径,c#,asp.net,visual-studio-2010,windows-server-2008-r2,C#,Asp.net,Visual Studio 2010,Windows Server 2008 R2,我有一个正在修改的asp.net应用程序。我将VisualStudio2010设置为发布到运行WindowsServer2008RC2的are开发服务器(我认为这无关紧要)。我通过visualstudios的“addnewitem”功能向应用程序添加了一个新的webform,它可以在本地计算机上运行。当我发布到服务器时,它开始抛出加密异常,因为它试图访问.p12文件,以便向iphone设备发送apple推送通知。起初我认为证书有问题,所以我在代码中添加了print语句,并注意到它试图通过本地计算

我有一个正在修改的asp.net应用程序。我将VisualStudio2010设置为发布到运行WindowsServer2008RC2的are开发服务器(我认为这无关紧要)。我通过visualstudios的“addnewitem”功能向应用程序添加了一个新的webform,它可以在本地计算机上运行。当我发布到服务器时,它开始抛出加密异常,因为它试图访问.p12文件,以便向iphone设备发送apple推送通知。起初我认为证书有问题,所以我在代码中添加了print语句,并注意到它试图通过本地计算机上的文件路径而不是服务器上的文件路径访问新页面。有人知道它为什么这么做吗?是否有方法使文件路径相对于项目?

服务器不重要。已使用绝对路径添加该文件。不知道为什么,也没有时间去研究

如何在调试机器上设置站点?您使用的是IIS还是ASP.NET开发服务器?不确定这是否有什么大不了的,但切换到IIS和更好地模拟生产通常可以解决这些小的snit类型的错误。若要切换,请将文件夹添加到IIS,然后删除项目并使用HTTP路径而不是项目文件夹重新包含

如果本地IIS不是一个选项,或者您已经这样做了,我会搜索有问题的路径并在那里修改它。如果没有找到结果,我们可以将其嵌入解决方案文件中。

您必须使用MapPath(“{relativePath/FileName}”)。这将返回一个物理路径

filename = MapPath("/images/logo.jpg")

可能会出现类似“C:\inetpub\webroot\images\logo.jpg”这样的情况,证书的文件路径很好。实际网页的文件路径错误。我让它打印异常的堆栈跟踪,它说问题出在C:\Users\myusername\Desktop\myapp\newpage.aspx行:71,它应该说C:\inetpub\wwwroot\newpage.aspx行:71实际上堆栈跟踪是正确的,因为它显示了编译时文件的路径,因为此信息存储在生成期间生成的.pdb文件中。因此,它实际上是从服务器上的c:\inetpub\wwwroot\newpage.aspx运行的,但是堆栈跟踪将显示文件编译时的位置。oohh ok。关于为什么在服务器上而不是在我的本地计算机上发生加密错误,您还有其他想法吗?在我的本地计算机上,设置为使用asp.net dev服务器。我将尝试切换到iis。当您试图找出本地和生产之间的差异时,它肯定会有所帮助。同样的问题。它在我的机器上工作,但在服务器上不工作。我想它确实与证书有关..我不确定是什么原因,因为它在我的机器上工作…@MBU:你也在使用ASP.NET开发服务器吗?还有,您是否检查过路径是“硬编码的”,隐式(由工具)还是显式(您以某种方式完成)?这两个步骤都是正确的故障排除步骤。我发现问题不在路径上。这与证书有关。当我在asp.net开发服务器下运行时,一切正常。但是,当我切换到iis时,它不会出现加密异常错误。在iis下运行时,读取证书的方式是否存在差异?