2010-02-09 104 views
2

我創建一個WCF服務與方法傳網絡路徑URL

[OperationContract] 
[WebGet(UriTemplate = "acl/f={fullFileName}")] 
string GetACL(string fullFileName); 

fullFileName是一個完整路徑到網絡文件或主機上的文件。

主機是帶有webHttpBinding和行爲配置的Windows服務。 我想使用的東西從瀏覽器中調用這個喜歡

http://localhost/webservice/acl/f=[my network path here] 

我已經試過.../ACL/F =文件:// \服務器\共享\ file.ext .../ACL/F = file:// c:\ file.ext

在瀏覽器中,我收到「找不到端點」。

我知道這是可行的,因爲我可以調用.../acl/f = file.txt,並從我的服務中取回正確的響應,指示找不到文件。所以當我在URI中不使用斜線時,方法會正確調用。

對此的任何想法將不勝感激。

感謝, beezlerco在Hotmail ...

+0

您是否嘗試過URL編碼您的斜槓? – 2010-02-09 20:08:12

+0

您是否將此值作爲get參數傳遞http : //yadda.com/yadda?f=path – 2010-02-09 20:10:53

回答

0

我相信HttpUtility.UrlEncode是你在找什麼。
(有關詳細說明,請參閱)

+0

嗨斯科特史密斯 - 是的,這是一個webget。我正嘗試從瀏覽器的地址欄中調用此方法。我正在嘗試輸入http:// localhost:port/webservice/acl/f = ??? 不確定什麼適合? – Beezler 2010-02-09 20:27:14

+0

嗨艾薩克Cambron,是的,我試過編碼他們%2f和%5c。當它無法進行web服務調用時,brownser替換適當的斜線。 謝謝, – Beezler 2010-02-09 20:28:47

+0

我認爲你是用C#編程生成URL的。我發佈的方法編碼一個字符串,以便通過get將其作爲參數傳遞是安全的。這個方法的副本是HttpUtility.UrlDecode,你可以使用它來重建原始字符串。如果您手動輸入網址,則必須手動進行適當的替換。 – kloffy 2010-02-09 21:05:52

0

你需要編碼的斜槓,冒號和技術上的時期也是如此。

  • \應%5C
  • /應%2F
  • 。應該%2E
  • :應該%3A

大多數其他特殊字符看到http://www.asciitable.com/和使用「%」加上該表上的六角柱。