2016-12-01 43 views
1

我在ASP.NET中使用Web Api的角度應用程序。當我在本地工作時,應用程序正確顯示ngBootbox,但是當我運行服務器(IIS 7.5)的應用程序時,chrome返回406(不可接受)錯誤。在開發工具網絡選項卡我有一個結果,當我嘗試撥打ngBootbox:406(不可接受)當我嘗試用html模板打開ngBootbox時出錯

This is the result I get when i call the ngBootbox

我已經嘗試了所有我在互聯網上找到的可能解決方案,如在IIS管理器中添加MIME類型我試圖用不同的方式來調用模態窗口,但沒有任何工作。

我還有一個ngBootbox工作正常,但一個不使用HTML模板

我也試圖用ngDialog和$ uibModal顯示一個模式窗口,但同樣的事情。

我非常渴望找到解決方案,我會很感激你。

注意:這是我在這裏的第一篇文章,我不知道我是否正確地做了我的問題。

好吧,這裏是我使用調用ngBootbox窗口的按鈕:

<button class="btn btn-lg btn-primary" 
      ng-bootbox-title="Registrar Llamada" 
      ng-bootbox-custom-dialog 
      ng-bootbox-custom-dialog-template="templates/calls.html" 
      ng-bootbox-buttons="buttons" 
      ng-click="setClientInfo(client.Id, client.Nombre)"> 
      <i class="fa fa-phone"></i> 
      </button> 

下面是我用了「NG-bootbox - 定製對話框的模板」模板:

<div class="card" ng-controller="callController"> 
<div class="card-body card-padding"> 
    <div> 
     <toaster-container toaster-options="{'time-out': 3000, 'close-button':true, 'position-class': 'toast-bottom-right'}"></toaster-container> 
    </div> 
    <div class="form-group" style="position:relative; top:30px; left:20px;"> 
     <div class="fg-line"> 
      <md-input-container class="md-block; col-sm-5;" flex-gt-sm> 
       <label>Cliente</label> 
       <input type="text" ng-model="client.ClientName" ng-disabled="true"> 
      </md-input-container> 
     </div> 

     <div class="fg-line"> 
      <md-input-container class="md-block; col-sm-5;" flex-gt-sm> 
       <label>Fecha de Llamada</label> 
       <input type="text" ng-model="date" ng-disabled="true"> 
      </md-input-container> 
     </div> 
     <div class="fg-line"> 
      <md-input-container class="md-block; col-sm-5;"> 
       <label>Observaciones</label> 
       <textarea required="true" ng-model="call.Observations" md-maxlength="200" rows="4" md-select-on-focus style="width: 380px;"></textarea> 
      </md-input-container> 
     </div> 

     <div class="form-group"> 
      <div> 
       <button type="submit" class="btn btn-primary" ng-click="saveCall(call)" style="position:relative; top:-15px; left:05px;"><i class="fa fa-phone"></i>&nbspRegistrar Llamada</button> 
      </div> 
     </div> 
    </div> 
</div> 

這裏是我的app.js:

var app = angular 
.module('RDash', [ 
    'ui.bootstrap', 
    'ui.router', 
    'ngCookies', 
    'ngMessages', 
    'ngAnimate', 
    'toaster', 
    'ngDialog', 
    'datatables', 
    'datatables.buttons', 
    'ngMaterial', 
    'ngBootbox', 
    'nvd3' 
]).config(['$httpProvider', function ($httpProvider) { 
$httpProvider.defaults.useXDomain = true; 
delete $httpProvider.defaults.headers.common["X-Requested-With"]; 
$httpProvider.defaults.headers.common["Accept"] = "application/json"; 
$httpProvider.defaults.headers.common["Content-Type"] = "application/json"; 
$httpProvider.defaults.headers.post = {}; 
$httpProvider.defaults.headers.put = {}; 
$httpProvider.defaults.headers.patch = {}; 
$httpProvider.useApplyAsync(true); 

}]);

我覺得我缺少的.config東西,但林不知道......

+1

分享調用正在加載的鏈接/網址/頁面的代碼。這個問題可能是通話方式。 – Searching

+0

請發佈您正在使用的相關代碼以及日誌中顯示的錯誤消息。 –

+0

代碼發佈@THeron –

回答

1

這意味着你的要求你發送接受頭部有一定的價值,但服務器(API)是生成格式不接受響應由客戶。例如如果您的請求包含接受標頭爲application/xml,並且服務器(API)正在生成application/json類型的響應,這意味着服務器生成的響應不被客戶端接受爲只接受application/xml格式的響應。檢查你正在發送的「Accept」頭的什麼值,以及以什麼格式生成響應。

+0

好的,我正在尋找接受標題......你知道哪個接受標題是針對xhr的? –

+0

您的接受標題將取決於生成的響應API類型。如果您在請求瀏覽器中忽略接受標題,它會自動檢測到它,並且您不需要擔心。但是,如果你明確地在請求中傳遞Accept頭,那麼它必須與服務器響應類型匹配。您可以通過選擇網絡選項卡中的請求並檢查標題選項卡來檢查您當前在開發人員工具中發送的內容。 –

+0

現在正在工作!只需刪除下一行:$ httpProvider.defaults.headers.common [「Accept」] =「application/json」;非常感謝!!!! –

相關問題