我正在尝试使用我的ASP.NET站点获得不同的服务器端堆栈。我的ashx文件似乎丢了500内部服务器错误。我如何弄清楚这个ashx文件抛出的异常或抛出500的原因?当我附加到我的IIS 7 w3wp.exe进程时,它不会抛出异常,但我读到这可能是这种情况。
ashx文件位于我的ASP.NET站点的根目录中,属性将其设置为编译。
GET http://uhc-8:8883/MyApp/ExtDirectProxy.ashx 500 (Internal Server Error) index.html:27
Uncaught TypeError: Cannot read property 'isProvider' of null ext-all-debug.js:74832
allow right click initializing for http://uhc-8:8883/MyApp/index.html rightclick.js:1
allow right click processing http://uhc-8:8883/MyApp/index.html rightclick.js:25
答案 0 :(得分:3)
如果您有一个名为“App_Code”的文件夹,您可能会感到头痛 和migranes。或者简单地用一些随机名称替换“App_Code” “代码”或“数据”并将您的类放在那里以解决此问题。在我的 例如,我的项目GUID是Web应用程序和C#类型。
最佳答案:
注意:强>
我使用带有静态端口的IIS运行该站点,而不是使用带动态端口的Visual Studio 2012。我在Web服务器上有特定的服务器配置,所以我希望该站点的行为与我们发布的站点的工作方式相同。这就是为什么我这样运行它。
回答我的问题:
这是因为我们在bin文件夹中有App_Data类的重复版本。 * .cs的“编译”版本和* .cs的网站版本。当存在多个具有相同名称的类时,会发生“isProvider”错误。当我们部署ASP.NET应用程序时,我们只部署* .cs文件的编译版本。在开发环境中,我们将它们设置为Properties>构建行动>无。
不确定一个简单的方法。它可能与在临时和/或obj文件夹中有东西有关,但不完全确定。将采取更多故障排除来发现原因。与此同时,这里列出了解决问题的方法。不确定这些是否有必要,但它现在正在运作。
要修复的步骤:
C:\WINDOWS\Microsoft.NET\Framework\{.NET version}\Temporary ASP.NET Files\
现在情况很好!
修改强>
实际问题是我在Visual Studio中引用了一个外部项目,但没有dll文件,因为项目类型是Console Application,而不是Class Library。真正的问题是Visual Studio说当你对另一个项目有一个using语句时它会编译好代码(在App_Code中),但是说Buildfulfully,即使Build Action>为App_Code中的所有* .cs文件设置编译选项。运行Web应用程序时,必须将其设置回Build Action>没有它可以工作。但是,由于App_Code中的* .cs文件实际上没有使用新代码进行编译(如果这是IIS中的ASP.NET处理这些App_Code * .cs文件的方式),它会抛出500内部服务器错误,因为没有好的CIL代码在运行时。为了解决这个问题,我只是将项目类型更改为类库,它仍然没有错误,但现在它可以将dll引用到另一个项目。
找到重复的类时,始终会发生isProvider错误。所以我不确定为什么会发生这种情况,但一旦修复上面的部分,这基本上就会消失。
答案 1 :(得分:1)
您可以使用Application_Error
文件中的Global.asax
事件来捕获该错误。
protected void Application_Error(Object sender, EventArgs e)
{
HttpContext ctx = HttpContext.Current;
Exception exception = ctx.Server.GetLastError();
int httpCode = ((HttpException)exception).GetHttpCode(); // check if it is 500
}