1

URL で複数のピリオドを許可するにはどうすればよいですか?

サンプル URL:

http://mylocalhost:6968/MyHome/Edit/ABCD.Applications.ClinicalData%257cCache_Timeout

私が試してみました:

さまざまな URL エンコーディング:

       @{
            //string encodedItem = Url.Encode(item.Key);
            //string encodedItem = HttpUtility.UrlEncode(item.Key);                
            string encodedItem = Server.UrlEncode(item.Key);
        }

ルート ハンドラの追加:

<add name="UrlRoutingHandler" type="System.Web.Routing.UrlRoutingHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" path="Remote.mvc/*" verb="GET"/>

web.config の変更system.web

<httpRuntime relaxedUrlToFileSystemMapping="true" />

これらのいずれも、サンプル URL を修正しませんでした。

関連コード

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Key)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Value)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.IsActive)
        </td>
        <td>
            @{
                //string encodedItem = Url.Encode(item.Key);
                //string encodedItem = HttpUtility.UrlEncode(item.Key);                
                string encodedItem = Server.UrlEncode(item.Key);                
            }
            @Html.ActionLink("Edit", "Edit", new {  id = encodedItem }) |
            @Html.ActionLink("Details", "Details", new {  id = encodedItem }) |
            @Html.ActionLink("Delete", "Delete", new {  id = encodedItem })
        </td>
    </tr>
}

[編集] リンクをクリックしています。

私も試しました

@Html.ActionLink("Edit", "Edit", new { id = item.Key })

次のhtml出力がありました:

a href=/MyHome/Edit/ABCD.Applications.ClinicalData%7CCache_Timeout

このリンクをクリックすると、エラーが発生します。

HTTP Error 404.0

にブレークポイントを設定しましたController.Edit。ブレークポイントにヒットすることはありません。フォームの URL があるときはいつでも:

http://mylocalhost:6968/MyHome/Edit/ABCD.X

X が a の後にある.場合、このエラーが発生します。X を削除すると、ブレークポイントにヒットします。

4

1 に答える 1

0

HTTP GET は不可能であることが判明しました。ソリューションを再設計することにしました。ここで、URL 経由でデータを渡すことを避けるために 、 HTTP POSTを実行します。

理想的には、私の URL はハッキング可能です。しかし、それは内部アプリであり、顧客が望んでいるものなので...ちょっと子供、壊れたガラスに注意してください

于 2013-03-07T21:52:49.927 に答える