2015-07-17 1 views
0

Мне не удалось найти полезный ответ на следующую проблему.
Угловой $ ресурс POST/PUT (оба) генерируют 405.0 - Метод Не допускается ошибка при простых вызовах WebAPI. Получить работы просто отлично. Приложение представляет собой MVC с WebAPI, работающим в IIS 7.5. Когда я пытаюсь запустить образец локально - отлично работает. Это не проблема CORS, и Auth был лишен.

PUT http://portal.local.com/api/products/5 405 (Method Not Allowed)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 

 
<head> 
 
    <title>IIS 7.5 Detailed Error - 405.0 - Method Not Allowed</title> 
 
    <style type="text/css"> 
 
    <!-- body { 
 
     margin: 0; 
 
     font-size: .7em; 
 
     font-family: Verdana, Arial, Helvetica, sans-serif; 
 
     background: #CBE1EF; 
 
    } 
 
    code { 
 
     margin: 0; 
 
     color: #006600; 
 
     font-size: 1.1em; 
 
     font-weight: bold; 
 
    } 
 
    .config_source code { 
 
     font-size: .8em; 
 
     color: #000000; 
 
    } 
 
    pre { 
 
     margin: 0; 
 
     font-size: 1.4em; 
 
     word-wrap: break-word; 
 
    } 
 
    ul, 
 
    ol { 
 
     margin: 10px 0 10px 40px; 
 
    } 
 
    ul.first, 
 
    ol.first { 
 
     margin-top: 5px; 
 
    } 
 
    fieldset { 
 
     padding: 0 15px 10px 15px; 
 
    } 
 
    .summary-container fieldset { 
 
     padding-bottom: 5px; 
 
     margin-top: 4px; 
 
    } 
 
    legend.no-expand-all { 
 
     padding: 2px 15px 4px 10px; 
 
     margin: 0 0 0 -12px; 
 
    } 
 
    legend { 
 
     color: #333333; 
 
     padding: 4px 15px 4px 10px; 
 
     margin: 4px 0 8px -12px; 
 
     _margin-top: 0px; 
 
     border-top: 1px solid #EDEDED; 
 
     border-left: 1px solid #EDEDED; 
 
     border-right: 1px solid #969696; 
 
     border-bottom: 1px solid #969696; 
 
     background: #E7ECF0; 
 
     font-weight: bold; 
 
     font-size: 1em; 
 
    } 
 
    a:link, 
 
    a:visited { 
 
     color: #007EFF; 
 
     font-weight: bold; 
 
    } 
 
    a:hover { 
 
     text-decoration: none; 
 
    } 
 
    h1 { 
 
     font-size: 2.4em; 
 
     margin: 0; 
 
     color: #FFF; 
 
    } 
 
    h2 { 
 
     font-size: 1.7em; 
 
     margin: 0; 
 
     color: #CC0000; 
 
    } 
 
    h3 { 
 
     font-size: 1.4em; 
 
     margin: 10px 0 0 0; 
 
     color: #CC0000; 
 
    } 
 
    h4 { 
 
     font-size: 1.2em; 
 
     margin: 10px 0 5px 0; 
 
    } 
 
    #header { 
 
     width: 96%; 
 
     margin: 0 0 0 0; 
 
     padding: 6px 2% 6px 2%; 
 
     font-family: "trebuchet MS", Verdana, sans-serif; 
 
     color: #FFF; 
 
     background-color: #5C87B2; 
 
    } 
 
    #content { 
 
     margin: 0 0 0 2%; 
 
     position: relative; 
 
    } 
 
    .summary-container, 
 
    .content-container { 
 
     background: #FFF; 
 
     width: 96%; 
 
     margin-top: 8px; 
 
     padding: 10px; 
 
     position: relative; 
 
    } 
 
    .config_source { 
 
     background: #fff5c4; 
 
    } 
 
    .content-container p { 
 
     margin: 0 0 10px 0; 
 
    } 
 
    #details-left { 
 
     width: 35%; 
 
     float: left; 
 
     margin-right: 2%; 
 
    } 
 
    #details-right { 
 
     width: 63%; 
 
     float: left; 
 
     overflow: hidden; 
 
    } 
 
    #server_version { 
 
     width: 96%; 
 
     _height: 1px; 
 
     min-height: 1px; 
 
     margin: 0 0 5px 0; 
 
     padding: 11px 2% 8px 2%; 
 
     color: #FFFFFF; 
 
     background-color: #5A7FA5; 
 
     border-bottom: 1px solid #C1CFDD; 
 
     border-top: 1px solid #4A6C8E; 
 
     font-weight: normal; 
 
     font-size: 1em; 
 
     color: #FFF; 
 
     text-align: right; 
 
    } 
 
    #server_version p { 
 
     margin: 5px 0; 
 
    } 
 
    table { 
 
     margin: 4px 0 4px 0; 
 
     width: 100%; 
 
     border: none; 
 
    } 
 
    td, 
 
    th { 
 
     vertical-align: top; 
 
     padding: 3px 0; 
 
     text-align: left; 
 
     font-weight: bold; 
 
     border: none; 
 
    } 
 
    th { 
 
     width: 30%; 
 
     text-align: right; 
 
     padding-right: 2%; 
 
     font-weight: normal; 
 
    } 
 
    thead th { 
 
     background-color: #ebebeb; 
 
     width: 25%; 
 
    } 
 
    #details-right th { 
 
     width: 20%; 
 
    } 
 
    table tr.alt td, 
 
    table tr.alt th { 
 
     background-color: #ebebeb; 
 
    } 
 
    .highlight-code { 
 
     color: #CC0000; 
 
     font-weight: bold; 
 
     font-style: italic; 
 
    } 
 
    .clear { 
 
     clear: both; 
 
    } 
 
    .preferred { 
 
     padding: 0 5px 2px 5px; 
 
     font-weight: normal; 
 
     background: #006633; 
 
     color: #FFF; 
 
     font-size: .8em; 
 
    } 
 
    --> 
 
    </style> 
 

 
</head> 
 

 
<body> 
 
    <div id="header"> 
 
    <h1>Server Error in Application "LITE_PORTAL"</h1> 
 
    </div> 
 
    <div id="server_version"> 
 
    <p>Internet Information Services 7.5</p> 
 
    </div> 
 
    <div id="content"> 
 
    <div class="content-container"> 
 
     <fieldset> 
 
     <legend>Error Summary</legend> 
 
     <h2>HTTP Error 405.0 - Method Not Allowed</h2> 
 
     <h3>The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.</h3> 
 
     </fieldset> 
 
    </div> 
 
    <div class="content-container"> 
 
     <fieldset> 
 
     <legend>Detailed Error Information</legend> 
 
     <div id="details-left"> 
 
      <table border="0" cellpadding="0" cellspacing="0"> 
 
      <tr class="alt"> 
 
       <th>Module</th> 
 
       <td>WebDAVModule</td> 
 
      </tr> 
 
      <tr> 
 
       <th>Notification</th> 
 
       <td>MapRequestHandler</td> 
 
      </tr> 
 
      <tr class="alt"> 
 
       <th>Handler</th> 
 
       <td>WebDAV</td> 
 
      </tr> 
 
      <tr> 
 
       <th>Error Code</th> 
 
       <td>0x00000000</td> 
 
      </tr> 
 

 
      </table> 
 
     </div> 
 
     <div id="details-right"> 
 
      <table border="0" cellpadding="0" cellspacing="0"> 
 
      <tr class="alt"> 
 
       <th>Requested URL</th> 
 
       <td>http://portal.local.com:80/api/products/5</td> 
 
      </tr> 
 
      <tr> 
 
       <th>Physical Path</th> 
 
       <td>C:\_Dev\Applications\liteangular_portal\LiteAngular\api\products\5</td> 
 
      </tr> 
 
      <tr class="alt"> 
 
       <th>Logon Method</th> 
 
       <td>Anonymous</td> 
 
      </tr> 
 
      <tr> 
 
       <th>Logon User</th> 
 
       <td>Anonymous</td> 
 
      </tr> 
 

 
      </table> 
 
      <div class="clear"></div> 
 
     </div> 
 
     </fieldset> 
 
    </div> 
 
    <div class="content-container"> 
 
     <fieldset> 
 
     <legend>Most likely causes:</legend> 
 
     <ul> 
 
      <li>The request sent to the Web server used an HTTP verb that is not allowed by the module configured to handle the request.</li> 
 
      <li>A request was sent to the server that contained an invalid HTTP verb.</li> 
 
      <li>The request is for static content and contains an HTTP verb other than GET or HEAD.</li> 
 
      <li>A request was sent to a virtual directory using the HTTP verb POST and the default document is a static file that does not support HTTP verbs other than GET or HEAD.</li> 
 
     </ul> 
 
     </fieldset> 
 
    </div> 
 
    <div class="content-container"> 
 
     <fieldset> 
 
     <legend>Things you can try:</legend> 
 
     <ul> 
 
      <li>Verify the list of verbs enabled for the module handler this request was sent to, and ensure that this verb should be allowed for the Web site.</li> 
 
      <li>Check the IIS log file to see which verb is not allowed for the request.</li> 
 
      <li>Create a tracing rule to track failed requests for this HTTP status code. For more information about creating a tracing rule for failed requests, click <a href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>.</li> 
 
     </ul> 
 
     </fieldset> 
 
    </div> 
 

 

 
    <div class="content-container"> 
 
     <fieldset> 
 
     <legend>Links and More Information</legend> 
 
     This error means that the request sent to the Web server contained an HTTP verb that is not allowed by the configured module handler for the request. 
 
     <p><a href="http://go.microsoft.com/fwlink/?LinkID=62293&amp;IIS70Error=405,0,0x00000000,7601">View more information &raquo;</a> 
 
     </p> 
 

 
     </fieldset> 
 
    </div> 
 
    </div> 
 
</body> 
 

 
</html>

я могу сделать AJAX вызовы к этому API методов, поэтому они должны быть хорошо. Я попытался добавить/удалить атрибуты Http ResponseType для всех, кому не повезло. Может ли какой-нибудь веб-/ угловой гуру пролить свет на эту проблему? Это что-то в IIS? Я нашел это: https://support.microsoft.com/en-us/kb/942051 и это http://www.c-sharpcorner.com/Blogs/47627/wepapi-http-error-405-0-method-not-allowed.aspx Но беспорядок с конфигурацией apphost IIS кажется хакерским. И я недостаточно знаком с этим, чтобы принять обоснованное решение. EDIT: Мой конфиг:

<customHeaders> 
 
    <add name="Access-Control-Allow-Origin" value="*" /> 
 
    <add name="Access-Control-Allow-Headers" value="Content-Type, Accept, Authorization" /> 
 
    <add name="Access-Control-Allow-Credentials" value="true" /> 
 
    <add name="Access-Control-Allow-Methods" value="POST,GET,PUT,DELETE,OPTIONS" /> 
 
    <add name="Access-Control-Max-Age" value="1728000" />       
 
</customHeaders>

Заранее спасибо!

P.S. Похоже, что проблема связана с WebDAVModule: Уведомление MapRequestHandler Handler WebDAV Код Ошибка 0x0000000

Любой знает, что это может быть, правда? ? Кто-нибудь ...

+0

Вы уверены, что запрос не отправив OPTIONS просить вместо PUT или POST? Думаю, это так, и вы не правильно настроили CORS. Быстрый взгляд на консоль браузера предоставил бы вам очень подробное сообщение об ошибке, если это так. –

+0

Пожалуйста, проверьте это: http://stackoverflow.com/questions/20260209/method-delete-is-not-allowed-by-access-control-allow-methods-error/30649935#30649935 –

+0

@Kevin, спасибо за быстрый ответ, однако я довольно уверен, что это не cors - это приложение MVC 1-project и работает на одном сайте. Я редактировал сообщение, чтобы включить полную ошибку. – lentyai

ответ

2

Оказалось, удаление обработчика WebDAV и WebDAVModule позаботилась о проблеме:

<handlers> 
    <remove name="WebDAV" /> 
</handlers> 
<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
</modules> 

 Смежные вопросы

  • Нет связанных вопросов^_^