2009-08-13 46 views
1

我想使用jQuery來進行一些AJAX調用,但是因爲我在IIS 6中啓用了通配符映射(對.NET),所以它似乎不起作用。禁用映射會讓所有事情都變得神奇。

我把web方法屬性放在.aspx頁面和.asmx web服務中的方法上,但都不起作用。下面是我使用了AJAX樣本URL來電:

localhost/UserChecker.aspx/CheckIfUserEmailsExists

localhost/UserChecker.asmx/CheckIfUserEmailsExists

我想,這一定是有東西的方式.NET是解釋URL的,但我不能完全肯定爲什麼。更重要的是,我不知道如何解決它,除了禁用通配符映射!有沒有其他方法?

UPDATE

的CMS我使用(Kentico)做一些URL路由,但即使我跳過了的global.asax.cs碼的路由選擇上,我仍然獲得了404
提前致謝!爲什麼IIS通配符映射會破壞我的AJAX調用?

+0

你也在做網址路由嗎? – 2009-08-13 13:13:14

+0

檢查我的更新。 – 2009-08-13 13:27:06

回答

2

隨着IIS通配符映射將首先運行經由通配符處理程序的初始請求。這將在您的CMS進行任何URL重寫(或URL路由)之前完成。

我認爲這就是爲什麼你得到404。

您還可以嘗試禁用通配符映射中的「驗證文件存在」複選框,以滿足實際URL將在稍後重寫爲其他內容時的情況。

1

這不是一個完整的答案,但我希望它指出你在一個解決方案的方向。

您是否嘗試過直接在瀏覽器中訪問url,並使用一些放置良好的斷點來追蹤問題?

如果你得到404s,這聽起來像你的路由規則不起作用。

[我會更新這個,如果你可以給你所看到的行爲,一些更多的信息]

UPDATE

我認爲可能發生的是:

你」重新爲您的文件提供具有擴展一個單獨的映射(在這些情況下的.aspx和的.asmx):

本地主機/ UserChecker.aspx/CheckIfUserEmailsExists

localhost/UserChecker.asmx/CheckIfUserEmailsExists

當您關閉通配符映射時正在使用這些映射,而'/ CheckIfUserEmailsExists'被處理使用或忽略。 打開通配符映射時,路​​由不會通知應用程序如何正確「路由」。

如果刪除了擴展名(通配符映射處於打開狀態),則執行以下工作嗎?

本地主機/ UserChecker/CheckIfUserEmailsExists

+0

我試過調試它,但我不完全確定我在找什麼。我在global.asax.cs'Application_BeginRequest'事件處理程序中放置了一個斷點,並且跳過了Kentico的路由代碼,但它仍然給了我404。如果我自己訪問服務或頁面,它可以正常工作。但是,當我添加「.NET Invoke」語法,並添加「/」和方法名稱不起作用。如果我禁用通配符映射,一切正常。 – 2009-08-13 13:41:12

+0

刪除擴展名不起作用,我不知道這將如何幫助嗎? IIS和.NET如何知道如何管理請求? – 2009-08-13 14:09:25

+0

我不知道Kentico,你說你在做某種路由,你試圖使用通配符的事實意味着你試圖通過asp dll發送所有的請求 - 除非我誤解了這個問題! – Lewis 2009-08-13 14:12:29

0

將相應的URL添加到排除列表中:使用「站點管理器」 - >「設置」選項卡中的「排除的URL」設置。 (basic help documentation

0

我建議檢查CMS框架之外的URl;問題必須與URL路由。沒有tsure它是如何在沒有通配符映射的情況下工作的。

需要了解的問題: 1.您是否在沒有通配符映射的情況下嘗試運行CMS? 2.這個CMS系統如何與IIS交互; IASPI dll?或HTTP處理程序/模塊?

相關問題