2014-11-08 41 views
0

我在我的网站上使用了类似REST API的东西。我正在使用PUT方法。Put方法抛出500错误ASP.NET MVC 5

[HttpPut] 
public ActionResult OrderChapter(ClientOrder order) 

但它不是Web API,它是MVC控制器。起初我收到405错误(方法不允许)。谷歌说我需要删除WebDAVModule

<system.webServer> 
<modules> 
    <remove name="WebDAVModule" /> 
</modules> 

在此之后,我有一个500错误。这不是我的代码。添加这个没有改变:

<handlers> 
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers> 

我的主机说,PUT,PATCH和DELETE方法没有明确禁止。

怎么了?也许在IIS的设置中不允许使用这种方法?

+0

一切都适用于发布吗?放置可能有问题。例如,angularjs不允许放置物体。只有参数,所以操作可能无法正确解决。 – 2014-11-08 15:45:40

+0

是的,它适用于发布。我使用jQuery.ajax。所以,似乎我应该使用后而不是放? – Thor 2014-11-08 16:14:01

+0

使用Fiddler并检查PUT请求是否包含正文中的有效内容。如果是,您可以切换到POST或使用查询字符串参数代替正文。 – 2014-11-08 16:34:02

回答

0

通常,错误代码#500与某些内部服务器错误有关,也是它的官方定义。

通俗地说,您的代码在PUT操作中出现问题,您可以通过快速调试PUT操作方法来解决问题,可能会抛出一些异常并将其转换到500错误代码由您的网络服务器(例如IIS)。

+0

我所有的代码都很好,它在IIS Express上工作,但不适用于Web托管。我评论了可能抛出异常的所有代码部分。 – Thor 2014-11-08 16:03:42

相关问题